2015-03-03 418 views
-1

剛剛在C編程,我試圖產生一次隨機數。但是當程序符合時,它會在用戶指定的範圍內生成30個隨機數。使用數組會更容易嗎?任何幫助都會很好。如何在C範圍內生成一個隨機數?

編輯

程序應提示用戶輸入銷售數量從1到10000下的範圍內進行模擬,它應該做的每一個模擬銷售以下:隨機選擇一個員工將銷售額記入貸方,隨機確定銷售總金額,將該金額添加到所選員工的銷售總額中,並增加員工的銷售數量。 - 這基本上是我想要做的。很抱歉的混亂

#include<stdio.h> 
#include<time.h> 
#include<stdlib.h> 

int main (void) 
{ 
    int n,c; // n is the number of sales to simulate, c is the counter 
    int id[30];// id[30] is the number of employees 
    srand(time(NULL)); 
    int myVar; 

    printf("Enter the number of sales to simulate: "); 
    scanf("%d", &n); 
    while(n<1 || n>10000)//blocking while loop 
    { 
     //prompt user to enter proper number for calculation 
     printf("Error: Enter a proper number in the range from 1 to 10000: \a"); 
     scanf("%d",&n); 
    } 
    printf("Id\n");//prints out the id 
    for (c = 0; c<30; c++) 
    { 
     id[c] = c; 
     printf("%d: ",id[c]); //prints out the id numbers starting from 0 and ending at 29 
     myVar = rand() % n + 1;//prints random number sale ranging from 1 to n for each employee but needs to print once for a random employee ranging from 1 to n. And should print zeros for the rest of the employees. 
     printf("\t%d\n", myVar); 
    } 

    return 0; 
} 
+0

檢查[如何在C中生成一個隨機數?](http://stackoverflow.com/questions/822323/how-to-generate-a-random-number-in-c)。還有一些隨機數字的答案。 – 2015-03-03 07:17:23

+1

好的,現在指定你確切的問題是什麼(給予更多細節)。 – 2015-03-03 07:24:37

+0

即時嘗試給隨機數字給隨機僱員(0-30)。其餘員工得到零。那爲什麼即時通訊使用for循環。但是它給每個員工一個隨機數。這就是我的問題 – nm10563 2015-03-03 07:31:44

回答

1

用於隨機數生成的代碼位於運行31次的循環內部。

for (c = 0; c<=30; c++) //c = 0 to 31 -> runs 31 times 
{ 
    myVar = rand() % n + 1; 
    printf("%d\n", myVar); 
} 

如果你想只有一次產生的隨機數,去除for loop

0
myVar = rand() % n + 1; 

這裏面有個針對運行30次

+0

我知道,但即時嘗試產生一次隨機數。我的程序應該提示用戶輸入銷售數量,模擬範圍從1到 10000.接下來,它應該爲每個模擬銷售做以下事情:選擇一個隨機員工以銷售額爲 ,隨機確定總數將該美元金額添加到所選擇的員工的運行銷售總額中,並增加員工的銷售數量。 – nm10563 2015-03-03 07:14:53

0

什麼是你想要做循環? 如果你想只得到一次印刷數量只是省略了循環:

#include<stdio.h> 
#include<time.h> 
#include<stdlib.h> 

int main (void) 
{ 
int n,c; 
srand(time(NULL)); 
int myVar; 

printf("Enter the number of sales to simulate: "); 
scanf("%d", &n); 
while(n<1 || n>10000)//blocking while loop 
{ 
    //prompt user to enter proper number for calculation 
    printf("Error: Enter a proper number in the range from 1 to 10000: \a"); 
    scanf("%d",&n); 
} 

myVar = rand() % n + 1; 
printf("%d\n", myVar); 
0

那麼問題是你使用的是for循環它創建的範圍31(因爲c = 0 ; c <= 30)隨機數並打印所有31.如果你只想打印一個隨機數,只需刪除for循環。你在這段代碼中實際上不需要myVar。您可以直接打印隨機數字而不存儲它。這是怎麼

#include<stdio.h> 
#include<time.h> 
#include<stdlib.h> 

int main (void) 
{ 
int n; 
srand(time(NULL)); 


printf("Enter the number of sales to simulate: "); 
scanf("%d", &n); 
while(n<1 || n>10000)//blocking while loop 
{ 
    //prompt user to enter proper number for calculation 
    printf("Error: Enter a proper number in the range from 1 to 10000: \a"); 
    scanf("%d",&n); 
} 

    // Removed the for loop and now only one random number is found 

    printf("%d\n", rand() % n + 1); // See, no need of a variable 

} 

另外,我不明白你使用數組的意思,所以給你在想什麼的更多細節。

0

使用,

srand (time(NULL)); 
number = rand() % 30 + 1; 

,或者如果要生成唯一的隨機號碼,使用urand這是在github上發現的()庫。

相關問題