24小时热门版块排行榜    

查看: 2552  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

ahuang1985

铁虫 (小有名气)

[求助] 求大家帮忙看个程序,C语言产生大于Rand_max(32767)个数的不重复的随机数

如题,下附我的程序;
但是运行i=32767后就停止了。 哪个高手帮帮忙哈, 多谢了!

#include
#include
#include
#include


int main(void)
{
    double Ci;
    int n,t=0,i=0,j=0,N;
    int b[100000];
    srand((unsigned)time(NULL));
    Ci=0.01;N=4025496;

    b[0]= (int)((double)(rand())/((double)(RAND_MAX)+1.0)*N);
        for (i=1;i<=(int)(N*Ci);i++)
        {
    Lab:b =(int)((double)(rand())/((double)(RAND_MAX)+1.0)*N);
for (j=0;j == b[j]) goto Lab;}

               printf("i=%d,%d\n",i,b);
         }
   printf("end";
        return 0;

}
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

锐利的碎片

木虫 (正式写手)

star watcher

【答案】应助回帖

比如这个
CODE:
uint32_t xor128(void) {
  static uint32_t x = 123456789;
  static uint32_t y = 362436069;
  static uint32_t z = 521288629;
  static uint32_t w = 88675123;
  uint32_t t;

  t = x ^ (x << 11);
  x = y; y = z; z = w;
  return w = w ^ (w >> 19) ^ (t ^ (t >> 8));
}

3楼2012-04-25 13:16:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

锐利的碎片

木虫 (正式写手)

star watcher

【答案】应助回帖

感谢参与,应助指数 +1
c的rand用的lcg,rand_max就是伪随机数序列的周期.所以要大于rand_max只有换个更长周期的随机数发生器.
2楼2012-04-25 13:12:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见