C#中的Random在获得随机数的时,如果你想要随机循环取得100个随机数则使用如下代码会出现大量的重复数字。代码如下:

using System;

namespace ConsoleApplication1

{

  class Program

{

    static void Main(string[] args)

   {

  for (int i = 0; i < 100; i++)

   {

     Random r = new Random();

      double n = r.Next(100) / 100;

    n = getr(n, r);

      string str1 = String.Format("{0:F}", n);

      Console.WriteLine(str1+"%");

    }

Console.Read();

}

static double getr(double temp, Random r)

{

while (true)

{

if (temp < 90)

{   temp = r.NextDouble() * 100;  }

else

{   return temp;   }

}

}

}

}

效果如图所示:

这是因为Random使用与时间相关的默认种子,也就是说Random在生成随机数的时候,是在一定的时间内生成的,如此由于计算机的处理速度非常的快,因此在某段时间内生成的随机数,或许会出现相同的情况。这里该怎么解决呢,首先看以下代码:

using System;

using System.Threading;

namespace ConsoleApplication1

{

  class Program

{

    static void Main(string[] args)

   {

  for (int i = 0; i < 100; i++)

   {

             Thread.Sleep(1000);

     Random r = new Random();

      double n = r.Next(100) / 100;

    n = getr(n, r);

      string str1 = String.Format("{0:F}", n);

      Console.WriteLine(str1+"%");

    }

Console.Read();

}

static double getr(double temp, Random r)

{

while (true)

{

if (temp < 90)

{   temp = r.NextDouble() * 100;  }

else

{   return temp;   }

}

}

}

}

这里我们添加了Thread.Sleep(1000);这个函数,作用就是让该线程挂起一段时间,如此一来就可以跳出Random生成随机数的时间。这样,我们再生成随机数的时候就可以减少重复的数据。

效果如图所示:

当然解决办法不止这一个,也可以将Random放到for循环的外面,对于原因这里要待续了。。。

有谁知道的也可以赐教一下。

最新文章

  1. Ajax参数详解
  2. Python for Informatics 第11章 正则表达式一(译)
  3. Spring的qualifier标签
  4. install usb serial
  5. Python 通过print将数据保存到文件中
  6. Jsp万能密码漏洞修复例子
  7. Magento 切换成中文后没有数据信息解决办法
  8. Hbase深入学习(二) 安装hbase
  9. Attempt to write to field &#39;android.support.v4.app.FragmentManagerImpl android.support.v4.app.Fragment.mFragmentManager&#39; on a null object reference
  10. 只能输入数字的文本框-php
  11. 安装scrapy框架的常见问题及其解决方法
  12. numpy 解一道简单数学题
  13. Linux系统编程----孤儿进程
  14. shell脚本简介
  15. dubbo 初探
  16. Error: [ng:areq] Argument ‘AppCtrl’ is not a function, got undefined
  17. Kali安装教程(VMWare)
  18. console.log()显示图片以及为文字加样式
  19. JZOJ 4273. 【NOIP2015模拟10.28B组】圣章-精灵使的魔法语
  20. java 并发runable,callable,future,futureTask

热门文章

  1. 洛谷 P1830 轰炸Ⅲ
  2. RCP打包出来 运行 出现 JVM terminated.exit code = 13
  3. 织梦dedecms5.7后台进去就卡死解决方法
  4. 使用spool命令从Oracle导出数据
  5. Java学习笔记--多线程
  6. cf B. Color the Fence
  7. windows下编译firefox
  8. 理解class.forName()(转)
  9. hdu 1853 最小费用流好题 环的问题
  10. Longest Consecutive Sequence 解答