主题:  random问题

dexn

职务:普通成员
等级:1
金币:1.0
发贴:157
#12001/3/14 17:14:10
在1-100之间产生随意数,但出现过的不再出现,有什么直接的办法吗?



D计划-混沌

职务:管理员
等级:6
金币:15.2
发贴:3528
#22001/3/14 19:08:03
global z_list
z_list=[]
repeat with i= 1 to 100
add z_list,i
end repeat
------------------------
global z_list
set Z_num=random(count(z_list))
set youwantnum=getAt(z_list,Z_num)
deleteAt z_list,Z_num
----------------------------



rainy_5d

职务:普通成员
等级:2
金币:1.0
发贴:225
#32001/3/14 22:31:30
在纸牌游戏中会用到这个,因为每个人的牌是随机的,而且不能重复。
我的思路是声明2个数组,一个存放1-100,另外一个存放新的数组,然后每次使用random前都从旧的数组中将此数减去,然后新数组中x=random(100) x=random(99) ....依次类推,使用循环,可保证随机数不出现重复。



dexn

职务:普通成员
等级:1
金币:1.0
发贴:157
#42001/3/15 13:57:26
这种方法我也知道,但我之所以问有没有直接的方法,是因为出现过的数字在后来却又要可以用,而且产生的随机数已经需要对应列表种的一个数。



jiesun

职务:普通成员
等级:1
金币:1.0
发贴:182
#52001/3/16 12:32:09
on RandomList Num
randomList = []
repeat with n = 1 to Num
randomlist.addat(random(n),n)
end repeat
return randomList
end RandomList