我用srand((unsigned)time(Null));
(double)rand()%100;
生成一百以下的随机数,可是产生的数好象还是有规律,从小到大,到了最大后又从小开始,怎样才能使产生的随机数没有一点规律呢?请帮忙!

解决方案 »

  1.   

    由于你使用srand((unsigned)time(Null));同时产生的数据数目比较小~~
    所以产生的数据还是有规律的~~~
    一个比较笨的方法是你可以在每次产生的数据后面加一句Sleep(1000);
    这样你看看效果~~~
      

  2.   

    利用水及函数种子后,在利用水及函数,就会消除规律了。randmize()
    大概是这个函数,搂主人试试
      

  3.   

    我需要每秒产生一个随机数,如果Sleep(1000);恐怕不行啊
      

  4.   

    试试这个,不用种子
    rand_s(unsigned int* randomValue)
      

  5.   

    看了一下msdn的用法/* RAND.C: This program seeds the random-number generator
    * with the time, then displays 10 random integers.
     */#include <stdlib.h>
    #include <stdio.h>
    #include <time.h>void main( void )
    {
    int i;
    /* Seed the random-number generator with current time so that
    ·  the numbers will be different every time we run.
        */
    srand( (unsigned)time( NULL ) );
    /* Display 10 numbers. */
    for( i = 0;   i < 10;i++ )
    printf( “  %6d\n”, rand() );
    }Output
    6929
    8026
    21987
    30734
    20587
    6699
    22034
    25051
    7988
    10104
    如果象他这样用的话,即使和100取模,也没有什么规律性阿
      

  6.   

    我在一步一步调试时,产生的随机数是没有规律的,问题可能是snowbirdfly(专心搞好嵌入式~~~) 所说的情况
      

  7.   

    rand()产生的随机数跟连续两次调用rand()的时间间隔有关
    因此如果多次调用rand()之间没有控制时间的语句,产生的随机数序列肯定是有规律的(sleep(1000)应该也不行)
    在每次rand之后加一句getch(),应该是可以打破这种规律的