.NET C# 不重复随机数的另类生成方式

一、环境

  .NET4.0 C#

二、引用

  .NET下的System.Numerics.dll

三、实现代码

  

        public static int get_randINT(int max)
        {
            int n = 0;
            string g = Guid.NewGuid().ToString("N");
            char[] c_g = g.ToArray();
            BigInteger b=0, c=1;
            for (int i = 0; i < c_g.Length; i++)
            {
                b += c_g[i];
                c *= c_g[i] + 1;
            }
            b = b + c;
            n = (int)(b % max);
            return n;
        }

四、说明

  在for循环产生大量随机数时经常会碰见产生的随机数是相同的,网上大部分解决方式都是存储对比再排除重新产生,感觉效率不够。

  随机数的目的就是唯一性,刚好GUID实现了唯一性这个特点,所以利用之。

  本函数产生0到max-1的随机数。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值