设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3045|回复: 6
打印 上一主题 下一主题

[已经过期] RGSS_π(山寨Super_π)?(只是RGSS的应用)

 关闭 [复制链接]

Lv3.寻梦者

梦石
0
星屑
1050
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

跳转到指定楼层
1
发表于 2009-3-15 22:07:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 DeathKing 于 2010-9-23 02:41 编辑

(神来之笔,莫名其妙的东西……我就爱搞这些莫明堂的东西)


工程附件:http://rpg.blue/upload_program/d/DeathKing_Ruby_PIE_117554809.rar

某日,翻阅川教版的高中一年级的《信息技术》时,偶然间发现了Quick Basic这个“神奇”的Basic语言(老的掉牙、比Visual Basic还简单)。

书上说他具有超强的计算功能,并介绍了他相关的一个利用求π公式求π值的程序,下面是Quick Basic的原代码:


是QuickBasic的原代码(RGSS的见下!)

  1. REM 求圆周率的近似值
  2. S = 0
  3. REM 自赋值,防止后面出错
  4. INPUT N
  5. REM 键入一个值,赋值给N
  6. FOR K = 1 TO N
  7. REM 关于K的循环求倒数平方和
  8. S = S + 1 / ( K * K )
  9. NEXT K
  10. REM 循环
  11. PI = SQR ( S * 6 )
  12. REM π的值为S的倒数和的6倍之算术平方根
  13. PRINT “PI=”;PI
  14. REM 屏幕回显π值
  15. END
复制代码
以上是Quick Basic的原代码,有兴趣的朋友可以研究一下。

后来经过我的提取与改造,这个求π公式倍移植到了Ruby(RGSS,下称Ruby)上。代码如下:

  1. #==============================================================================
  2. # ■ Ruby_π
  3. #------------------------------------------------------------------------------
  4. #  通过圆周率计算公式测定计算机速度
  5. #   visit:myyxs.5d6d.com myyxs.cn.vc
  6. #   Made By DeathKing
  7. #   特别声明!老爷机请勿试验!否则后果。。。会被220伏特掉的!
  8. #   当然,键入数值越大,使用的时间越少,机器的处理速度越快。
  9. #   调用方法,在脚本处使用 ppi(参数) 就可以了,参数为任意整数。
  10. #==============================================================================
  11. def ppi(x = 0)         
  12.   start_time = Time.now # 获取当前时间。
  13.   s          = 0        # 自赋值,避免后面的自运算出错。
  14.   def_pi     = 3.14159265358979323
  15.                         # 限定精度(已知的精度,用其与求出的精度做比较。)
  16.   $old_type  = false    # 使用旧风格输出?输出的数据都挤在一排
  17.   $max_x     = 999999   # 设定参数的最大值
  18.   if x > $max_x.to_i    # 买人寿保险。 囧~O_O  。。。
  19.     p "为防止您的出现'脚本已备份'的情况,设定了限制值。可在脚本第18行修改。"
  20.   else
  21.     for i in 0..x   # π的求值公式。
  22.       i = i + 1.00  # 浮点数运算
  23.       s = s + 1 / ( i * i )  # 循环运算
  24.     end
  25.     use_time = Time.now - start_time    # 获取计算使用的时间,单位:秒。
  26.     pi_n = Math.sqrt( s * 6 )           # 求算术平方根。
  27.     pi_pre = (1 - (def_pi - pi_n)) * 100
  28.     temp_p_a = "π的值为: " + pi_n.to_s           # 屏幕回显π值。
  29.     temp_p_b = "精确度为: " + pi_pre.to_s + "% "  # 屏幕回显精度。
  30.     temp_p_c = "消耗的时间为: " + use_time.to_s   # 屏幕回显时间。
  31.     p_result = temp_p_a + "\n" + temp_p_b + "\n" + temp_p_c + "秒 "
  32.     print p_result
  33.     f = File.open("./save.txt","a")
  34.     if $old_type  == false
  35.       f.write("\n" + "------------- | 记录的值 | -------------" + "\n")
  36.       f.write("π的值为: "   + "#{pi_n}"             + "\n")
  37.       f.write("键入的数值: " + "#{x}"                + "\n")
  38.       f.write("精确度: "     + "#{pi_pre}"   + " %"  + "\n")
  39.       f.write("消耗的时间: " + "#{use_time}" + " 秒" + "\n" )
  40.     else
  41.       f.write("值:" + "#{pi_n}  |  " + "键入的数值:" + "#{x}"+ " | 精确度:" + "#{pi_pre}" + " | 消耗的时间:" + "#{use_time}" + " 秒"+"\n" )
  42.     end
  43.     # 将信息写入文件。
  44.   end
  45. end
复制代码
原理是这样的:
1)定义一个函数ppi(Print_π,π值回显),x = 0作为他的参数,即Quick Basic中的INPUT N;
2)获取当前系统时间,用于对计算此函数所耗时间进行评定;
3)对N做限制,防止一些列不可预见的情况发生;
4)调用求π公式;
5)获取当前系统时间,并与前一个时间做比较,得出消耗的时间;
6)回显时间及π值,即Quick Basic中的PRINT “PI=”;PI
7)记录到文件。

这样,这个Ruby_π就完成了。
当然,键入的值越大,消耗的时间越少,计算机的速度越快。(π值的准确率与x的大小有关,x越大,π越精确,反之,越不精确。)

这个Ruby_π存在的弊端,有如下几点:
1)速率低:
2)精度不高;
3)内存、CPU占用大。

所以,这里只是推荐大家做小测试,不建议大家使用这个程式来评价计算机,推荐使用正规的Super_π。

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
头像被屏蔽

Lv1.梦旅人 (禁止发言)

UltraDevil

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-3-9
帖子
262
2
发表于 2009-3-15 22:23:49 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1050
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

3
 楼主| 发表于 2009-3-15 23:01:19 | 只看该作者
几乎没用……
只是间接测算计算机的处理速度(间接讽刺Ruby的“速率”)

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
385 小时
注册时间
2007-7-27
帖子
4106

开拓者

4
发表于 2009-3-15 23:30:33 | 只看该作者
Qbasic是萌物……
居然现在还能看见qb的代码,泪流满面(虽然我把那个大都忘了……)

……其实我觉得那些写文件大概都比算圆周率本身耗时间……
吸吸
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-3-7
帖子
21
5
发表于 2009-3-16 00:33:25 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
6
发表于 2009-3-19 18:23:07 | 只看该作者
我还是直接调用 Math::PI 吧
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

7
发表于 2009-3-19 19:50:10 | 只看该作者
Math库里有个进度极高的pi{/fd}不需要自己算
神隐中,偶尔诈尸
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-6 01:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表