找回密码
 点一下
查看: 734|回复: 6

关于随机数的问题

[复制链接]
发表于 2013-2-4 08:11:37 | 显示全部楼层 |阅读模式
随机整数只能取从X到Y之间的数 比如0到50
我想从这些数里面排除一些数来选取随机整数
比如排除10、20、35(这些数是变量)
然后从排除以后的范围内选取一个随机整数 如何实现?
发表于 2013-2-4 09:24:00 | 显示全部楼层
那就 如果随机到这些数字 忽略 再随机一次好了
回复

使用道具 举报

 楼主| 发表于 2013-2-4 10:11:35 | 显示全部楼层
恩差不多了解,谢谢  再看看有没有好一点的办法
回复

使用道具 举报

发表于 2013-2-4 12:41:04 | 显示全部楼层
最简单的是沙发说的,如果你不喜欢,可以做多个随机,比如从0到50随机,但不要12、23的话,可以随机0-11,随机13-22,随机24-50,然后先用一个另外的随机来决定使用哪个随机。不过这样做就非常麻烦了,而且需要计算权重,因为上述3个随机的话,所包含的数的个数是不同的,所以选择的时候也不能简答的使用随机1-3来决定。
回复

使用道具 举报

发表于 2013-2-4 15:33:19 | 显示全部楼层
楼上几位的算法真坑爹
最好的方法是整数数组,当然如果你的随机长度不确定,可能任意大的话直接用DataTable
然后跳过不存在的值 进行赋值

如1~10 跳过 2,3,5,7
则逐一赋值1,4,6,8,9,10
循环赋值时计数
共计6个有效随机值
这样随机0~5即可,然后以随机数来读取真实随机值
回复

使用道具 举报

发表于 2013-2-4 22:40:20 | 显示全部楼层
还是认为沙发的方法最好,因为不需要初始化。当然,如果断点太多,数字并不连续,那么楼上的方法效率高一些。
至于我那个,纯属游戏而已,当不得真。
回复

使用道具 举报

发表于 2013-2-5 12:08:21 | 显示全部楼层
孔明的方案比较通用。

而ZeratulWill的方案比较适用于被忽略的值数量远少于总数量的情况。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-9-29 18:38 , Processed in 0.035725 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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