Project1
标题: 数组的一个问题 [打印本页]
作者: z2z4 时间: 2015-9-4 15:40
标题: 数组的一个问题
本帖最后由 z2z4 于 2015-9-4 17:05 编辑
就是这个属性数组
for i in 1..8
i 在循环 8次的时候 这个 a 的属性 如何 让他 随机数值
比如 [1,2,3,5,6,7,4,5] 这8个数值 如何 让他随机 我弄了半天都不行
for a in rand(5) 这样写 好像不行 有高人 可以指点吗
params = [a] * i
end
end
难不成 只有这样写?
e = rand(20) f = rand(30)
a = [e,f,3,4,5,6,7,8].shuffle
作者: 翻滚牛宝宝 时间: 2015-9-4 16:05
本帖最后由 翻滚牛宝宝 于 2015-9-4 16:38 编辑
这样就可以了……a=[1,2,3,4,5,6,7,8].shuffle
for i in 1..8
b=a[i]
p b
end
a=[1,2,3,4,5,6,7,8].shuffle
for i in 1..8
b=a[i]
p b
end
shuffle是打乱数组内顺序 你把数组顺序打乱了 再按顺序读取就是随机了
你要是想要8个数的话 a.shuffle 就是了
作者: 喵呜喵5 时间: 2015-9-4 16:17
直接rand呗- for i in 1..8
- a = rand(8) + 1
- p a
- end
复制代码
作者: 翻滚牛宝宝 时间: 2015-9-4 16:55
翻滚牛宝宝 发表于 2015-9-4 16:05
这样就可以了……a=[1,2,3,4,5,6,7,8].shuffle
for i in 1..8
b=a
你搜一下数组 就知道怎么用了
作者: 翻滚牛宝宝 时间: 2015-9-4 17:28
不用e f 直接rand(20 ) rand(30)
作者: VIPArcher 时间: 2015-9-4 17:37
本帖最后由 VIPArcher 于 2015-9-4 17:38 编辑
http://tieba.github.io/common/howtoask.html
作者: 墨凌羽 时间: 2015-9-4 18:43
本帖最后由 墨凌羽 于 2015-9-4 12:48 编辑
喵呜喵5 发表于 2015-9-4 10:17
直接rand呗
@楼主 3楼错哪里了来来来我们谈谈
一下是将3楼代码运行1000次后的输出结果。我对生成的1~8的每个数字出现的次数做了统计,结果如下
统计:
1出现次数:7933
2出现次数:8010
3出现次数:8070
4出现次数:8010
5出现次数:8041
6出现次数:7939
7出现次数:7813
8出现次数:8184
可以看出每个数字出现的次数很均匀。完全符合随机的要求
虽然说8个数字为同一个的概率只有(1/8)^8这么小 但偏偏被你撞上也不能怪谁。俗话说点背不能怪社会不是?就这样认为3楼脚本有问题是不是太过不厚道?
竟然说我家喵呜喵5的脚本有问题 分分钟打脸!
测试结果文件:
test.rar
(288.15 KB, 下载次数: 37)
【将后缀改成txt再打开】
测试代码File.open("test.txt","w") do |f|
table = []
#随机1000*8次
1000.times do |x|
list = []
for i in 1..8
list.push(rand(8) + 1)
end
f.write("第#{x+1}次:#{list}\n")
table.push(list)
end
#统计各个数字出现次数
count = [0,0,0,0,0,0,0,0,0]
table.each do |i|
i.each do |n|
case n
when 1
count[1] += 1
when 2
count[2] += 1
when 3
count[3] += 1
when 4
count[4] += 1
when 5
count[5] += 1
when 6
count[6] += 1
when 7
count[7] += 1
when 8
count[8] += 1
end
end
count[0] += 8
end
p count[0],count[1]/count[0]
f.write("统计:\n")
f.write("1出现次数:#{count[1]}\n")
f.write("2出现次数:#{count[2]}\n")
f.write("3出现次数:#{count[3]}\n")
f.write("4出现次数:#{count[4]}\n")
f.write("5出现次数:#{count[5]}\n")
f.write("6出现次数:#{count[6]}\n")
f.write("7出现次数:#{count[7]}\n")
f.write("8出现次数:#{count[8]}\n")
end
File.open("test.txt","w") do |f|
table = []
#随机1000*8次
1000.times do |x|
list = []
for i in 1..8
list.push(rand(8) + 1)
end
f.write("第#{x+1}次:#{list}\n")
table.push(list)
end
#统计各个数字出现次数
count = [0,0,0,0,0,0,0,0,0]
table.each do |i|
i.each do |n|
case n
when 1
count[1] += 1
when 2
count[2] += 1
when 3
count[3] += 1
when 4
count[4] += 1
when 5
count[5] += 1
when 6
count[6] += 1
when 7
count[7] += 1
when 8
count[8] += 1
end
end
count[0] += 8
end
p count[0],count[1]/count[0]
f.write("统计:\n")
f.write("1出现次数:#{count[1]}\n")
f.write("2出现次数:#{count[2]}\n")
f.write("3出现次数:#{count[3]}\n")
f.write("4出现次数:#{count[4]}\n")
f.write("5出现次数:#{count[5]}\n")
f.write("6出现次数:#{count[6]}\n")
f.write("7出现次数:#{count[7]}\n")
f.write("8出现次数:#{count[8]}\n")
end
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |