c語言里用rand為什麼每次執行總是產生一樣的隨機數
1. c語言rand()。為什麼兩次調用number,生成的隨機數一直相同大神幫忙呀!
# include <stdio.h>
#include<time.h>
#include<stdlib.h>
int number(int &n)
{
srand(n);
return rand() % 100 + 1;
}
int main()
{
int a=200,b=0,s=300;
a=number(a);
b=number(s);
s=a+b;
printf("%d+%d=%d\n",a,b,s);
}
小兄弟,我覺得你的代碼有很大的問題,首先,為什麼要在number裡面弄一個參數,而在number()函數裡面又不用這個調用的參數,這是我的一個疑問。然後我把你的代碼稍微改了一下,已經可以隨機出不同的兩個數,不知道是不是你想要的。有什麼疑問請追問!
2. c語言中rand()函數生成的隨機數怎麼關閉軟體重新生成的時候又是一樣的啊
你按下面這個程序運行就不會出現逆說的情況:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int a;
srand(time(0));
a=rand()%10;
printf("%d\n",a);
}
原因是srand()每次都將系統當前時間設成了隨即函數的種子,那麼每次執行程序的種子都是不同的,產生的隨機數也就不同了
3. C語言:為什麼每次產生的rand隨機數全都一樣例如第一個是9,後面全都是9
/*
Enter the number of sets: enter q to stop.
5 9
How many sides and how many dice:3
Here are 5 sets of 3 9-sided throws.
25 18 14 13 17
How many sets? Enter q to stop.
q
Press any key to continue
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intdiceroll(intnum,intside);//返回骰子產生的數字的總和
intmain(void){
intsets,side,dice;//sets為回合數,side面,dice:骰子個數
inti;//變數初始化
srand((unsigned)time(NULL));//應在main()初始化隨機數種子
printf("Enterthenumberofsets:enterqtostop. ");//set組
while(scanf("%d",&sets)==1&&sets>0){
printf("Howmanysidesandhowmanydice:");
if(scanf("%d%d",&side,&dice)==2){
printf("Hereare%dsetsof%d%d-sidedthrows. ",sets,dice,side);
for(i=0;i<sets;i++)//0-sets個回合
printf("%d",diceroll(side,dice));//列印出返回值
printf(" ");
printf("Howmanysets?Enterqtostop. ");
}
elseprintf("inputside,anddice: ");
}
return0;
}
intdiceroll(intside,intdice){
inti,sum;
for(i=0,sum=0;i<dice;i++)
sum+=rand()%side+1;//產生3個骰子搖出的總和sum
returnsum;//返回3個骰子搖出的總數sum
}
4. C語言中的rand()函數,說是產生隨機數的函數,可是為什麼我在使用時產生的隨機數就沒變過呢
我記得rand()是需要參數的,不同參數導致不同的序列,比如用當前時間作為參數就是一個不錯的選擇。
5. c語言里用rand為什麼每次執行總是產生一樣的隨機數
需要首先使用隨機數「種子」初始化,srand函數:
#include
<stdlib.h>
#include
<stdio.h>
#include
<time.h>//使用當前時鍾做種子
void
main(
void
)
{
int
i;
srand(
(unsigned)time(
NULL
)
);//初始化隨機數
/*
列印10個隨機數.
*/
for(
i
=
0;
i
<
10;i++
)
printf(
"
%d\n",
rand()
);
}
6. C語言用rand函數為什麼每次都是相同的隨機數
生成隨機數的時候沒有初始化種子,每次生成的都是相同的隨機序列,
可以使用時間初始化。
在main函數的第一句加上srand(time(null));
再調用rand()生成隨機數。
需要包含以下頭文件
#include
#include
7. c語言用了rand()為什麼每次都是一樣的隨機數
你沒有初始化隨機種子。在main函數里事先加上srand(time(NULL))。
8. c語言rand()每次執行產生的結果都一樣
用rand之前,用srand初始化種子
9. c語言 產生一個隨機數,如何讓它每一次運行出現不同的隨機數結果
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain(void)
{
inta;
srand((unsigned)time(NULL));//用時間初始化隨機數生成種子
a=rand()%10;
printf("%d ",a);
}
2
Pressanykeytocontinue
9
Pressanykeytocontinue