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

Project1

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

[已经解决] 求个优化的随机数算法

[复制链接]

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

1
发表于 2018-4-1 11:52:48 | 显示全部楼层
本帖最后由 guoxiaomi 于 2018-4-1 11:53 编辑
  1. #--------------------------------------------------
  2. # Net_Rand
  3. #--------------------------------------------------
  4. class Net_Rand
  5.   def initialize(seed = '0000')
  6.     reset(seed)
  7.   end

  8.   def update(i = nil)
  9.     @result = Zlib::crc32((@seed ^ @result).to_s(16))
  10.     return (i ? @result * i : @result.to_f) / (1 << 32)
  11.   end

  12.   def reset(seed = '0000')
  13.     @seed = Zlib::crc32(seed.to_s)
  14.     @result = 0
  15.   end
  16. end
复制代码

当年为了伪随机同步随便写了个,反正肯定没有直接srand,rand靠谱,你可以参考一下思路。

点评

zlibcrc的方法实现随机,效果还是可以的,就是会略微有一点点的运算延迟,不过,一般是感觉不出来的。  发表于 2018-4-1 12:17

评分

参与人数 1+1 收起 理由
灯笼菜刀王 + 1 精品文章

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

2
发表于 2018-4-2 10:12:24 | 显示全部楼层
灯笼菜刀王 发表于 2018-4-1 13:11
非常感谢, 不过,有看没有懂....  知道其然而不知其所以然......

位运算这个等级对咱来说还是太 ...

  1. $rand = Net_Rand.new(Time.now.to_f)
  2. $rand.update # => 0~1之间的随机小数
  3. $rand.update(100) # => 0~99之间的随机整数
  4. $rand.reset(Time.now.to_f) # => 利用当前时间重置随机数种子
复制代码

评分

参与人数 2星屑 +100 +2 收起 理由
RyanBern + 100 + 1 被醋瞎
灯笼菜刀王 + 1 认可答案

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-7 10:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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