使用c#生成不重复的随机数

这篇博客介绍如何在C#中利用RNGCryptoServiceProvider类生成不重复的随机数,适用于需要确保随机数唯一性的场景。作者分享了一个简单的程序,通过将生成的随机数与数组中的值对比避免重复,适合用于彩票选号等应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  我不常投机,偶尔兴趣来了也会去买几注彩票,但选号是个让人头痛的事情,以前我都是让彩票机进行机选,最高纪录是中了个5元钱,还挺兴奋的。前几天因为工作需要,要用到随机数生成,且生成的数不能够重复,我在网上找了很多相关的程序,看的我头有点大,算了还是自己写一个吧,虽然不是最好的但必竟是自己写的东西。工作完成后我把它改成了一个专门为福彩35选7进行选号的小东东 

  首先,在C#中最常用的随机数生成类是System.Random很ease的东东用法我就不多说了,但是他的缺点地球人都知道,就是不够随机,于是我参考学习了其他大侠的程序后决定使用System.Security.Cryptography下的RNGCryptoServiceProvider类来进行随机数生成,他的优点是真的好随机,缺点是速度比Random要慢,在短时间里生成大量随机数的情况下不推荐使用此类,好了,很简单明了程序如下:

 PS:程序的思路是,把生成的随机数放在一个数组中,从第2个产生的随机数起开始与数组中的值进行比较如果相同则重新生成!

   byte [] bytes  =   new   byte [ 16 ]; // 建一个数组用于存储随机生成的值
        RNGCryptoServiceProvider r  =   new  RNGCryptoServiceProvider(); // 使用RNG类生成随机
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值