zoukankan      html  css  js  c++  java
  • c语言中产生随机数

           今天做数独游戏的时候遇到一个问题,没法做到随机产生几组0-9之间的随机数。刚开始产生一组是没问题的,但当用循环来产生几组随机数时,发现产生的几组随机数完全是一样的。百度之后知道了原因,原来c语言中的随机数也不能算是完全随机数。srand((unsigned)(time(NULL)))是用来接收一个随机种子,rand()是根据随机种子而得到的一组随机数。说是随机数,其实本质却是一组不变的数。即只要随机种子一样,rand()得到的是一组永远不变的随机数列。而随机种子是(unsigned)(time(NULL)),是1970年1月1号到现在共有多少秒。这就造成了一个问题,如果你想得到几组随机数,而此时你把获得随机数的种子的函数srand((unsigned)(time(NULL)))放在循环里面,会因为每次循环时间远远小于1秒而每次得到的随机数都是以该随机种子所代表的一组永远不变的随机数列的前几个随机数。解决办法也很简单,产生随机种子的函数放到循环函数外面去,这样虽然种子永远是不变的,但每次得到的随机数就是该随机种子所代表的一组永远不变的随机数列的n歌随机数了,即他会延续着上一次的地方继续读取该组随机数。(难说清楚)

          eg.例如 随机种子a对应了固定的一组随机数列 1 5 6 78 9 2 4 5 7 1 2 35 52 41 你要产生2组4位的随机数,那么随机种子函数放在内部得到的随机数为1 5 6和1 5 6

    随机种子函数放在外面得到的随机数为1 5 6和78 9 2

  • 相关阅读:
    造轮子杂记2
    Net分布式系统之五:微服务架构
    C#设计模式:责任链模式
    NET Core1.0之CentOS平台开发控制台程序DEMO
    WCF Routing 服务
    设计模式之外观模式
    设计模式之简单工厂模式
    Eclipse快捷键总结
    Spring容器的初始化流程
    IOC容器的创建
  • 原文地址:https://www.cnblogs.com/aloney/p/5318587.html
Copyright © 2011-2022 走看看