lua 怎么将某一次产生的lua 随机数数输出。 比如获取到数组中的值以后将这个值传出到其他的LUA函数中用

3855人阅读
quick cocos2dx(1)
& & & & LUA中的自带函数库中有两个关于随机数的函数,一个是random,一个是randomseed。
random有两个参数,用来设置随机数的范围,比如random(1,100)设置随机数的范围为1至100之间。
(random函数说明)This function is an interface to the simple pseudo-random generator function&rand&provided by ANSI C.
由于C中所产生的随机序列是固定的。也就是每次执行时取得的随机数是一样的。LUA的random函数说明已经指出,lua的random函数只是对ansi c的随机函数的一次封装。所以依然存在这个问题。执行random(1,600),每次的输出结果都是:
[LUA-print] 1
[LUA-print] 79
[LUA-print] 454
[LUA-print] 276
[LUA-print] 320
[LUA-print] 132
[LUA-print] 29
[LUA-print] 408
[LUA-print] 408
[LUA-print] 561
这个只是伪随机,并不能达到我们想要的效果,于是另一个函数的用处就有了。
randomseed()函数,设置随机数的种子。在lua虚拟机启动的时候设置一个随机种子,让系统产生的随机序列不相同,但使用randomseed的时候也还要注意一个问题,那就是做种子的数要足够的大,大于10000就行了。不然randomseed所产生的随机序列的第一个值还是很小。原因是randomseed是直接封装了C的srand,如果种子的值太小,那么srand所产生的序列和默认序列(srand(1)所产生的序列)是相差不大的,序列的第一个值还是很小。
&&&&&&& 因此,只要在lua虚拟机启动的时候调用一下randomseed(os.time())就可以解决这个问题了。但是这样依然还有问题存在。
虽然可以获取我们想要的真正的随机数了,但是有个缺陷就是每次第一次调用时获取的随机数依然就固定的,至于原因就涉及到lua内部实现了。解决方法很简单,就是在设置随机种子的时候调用一下random函数,随后就能正常获取随机数了。
在lua虚拟机启动的时候调用:
& &&--设置随机种子
& & math.randomseed(os.time())
& & math.random(1,<span style="color:#c8)
需要随机数的时候只需要调用:random(1,600)就可以了。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:17634次
排名:千里之外
原创:18篇
(2)(5)(3)(1)(1)(3)(8)(4)

我要回帖

更多关于 lua生成不重复随机数 的文章

 

随机推荐