C#短时间内产生不大量重复的随机数

        在C#编程中,经常会碰到产生随机数的情况,并且是在短时间内产生一组随机数。如果这组随机数中有大量重复的,则达不到我们的要求。生成随机数可以用伪随机数发生器Random,受种子控制生成伪随机数,默认以当前时间值为种子。如果程序运行的很快,就会导致在几乎同一时刻运行多次,肯定会有重复的。比如我们要生成1到10之间的5个随机数,则经常会产生 2 2 1 1 1这样的情况,那么如何得到非常随机的不那么重复的随机数呢?比如 4 2 3 3 5这样的。

        有人说用Thread.Sleep(5) ,但我不推荐,因为这样会使系统减缓运行。

        我采取的方法是:用种子Guid.NewGuid().GetHashCode(),在短时间里不会出现大量重复。

       以下代码中,得到的是1到20之间的10个随机数(不包括20)。数组a、b、c分别采用不同的方法产生随机数,数组a和b均调用了方法randbit,不同的是数组a多传了一个参数i改变随机数的种子,数组b用的方法是我在编程中经常用到的,即通过调用一个方法来产生随机数,非常方便。数组c采用的方法也可以,但在实际编程中很少用到。数组d类似于数组c,只是产生的是0,1之间的随机数。

代码如下:

得到的结果为:

以下是我参考的别人的代码:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值