Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
197 views
in Technique[技术] by (71.8m points)

c++ - Repeated random number in a loop

A need to generatera random numbers between 0 and 1 for every different loop.

for ( 1 to 10000) a call RandomKey function so as to generate different random numbers. But the problem is every iteration i get same numbers.

RandomKey function is as follows:

 void RandomKey ()
 {
   srand((unsigned)time(0));
   for (int k=0;k<ActivityNumber;k++)
 {

Act_num[k].Priority=(rand()%10000)*0.0001;//random number

 }


for (int i=0;i<ActivityNumber;i++)
   arr[i]=Act_num[i].Priority;

How can i solve the problem?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Move the seeding function call (srand) outside of the function call (ie. at the beginning of your program, once).

Edit: on further thought, if you mean that you get all 0's in arr (if it's say... int), that's because rand()%10000)*0.0001 returns a number between 0 and 0.0003 or so, so if you cast them to int, you'll get 0.

Edit2: Nevermind, seems I guessed right the first time :)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...