我的目標是生成一個程序,它可以從用戶(srand)中獲取一個隨機數,然後將其提供給一個隨機數生成器(rand),然後再選擇1到10之間的1000次隨機數。輸出每個數字有多少(即7出現83次,等等)。如何只傳遞1000個隨機數字1-10,scanf,以便我可以輸出每個出現的次數有多少?
我能夠從用戶的第一位數字後隨機打印1到10之間的1000個數字,但無法弄清楚如何獲取這個輸出並將其輸入到一個數組中,然後這個數組可以用來中斷放下打印的信息。任何人都可以幫忙嗎?
#include <stdio.h>
#include <stdlib.h>
int rand1(void);
void srand1(unsigned int seed);
int main()
{
int rand_array[1000];
int count;
int start=1;
int end=10;
int number_var;
int ones=0;
int twos=0;
int threes=0;
int fours=0;
int fives=0;
int sixes=0;
int sevens=0;
int eights=0;
int nines=0;
int tens=0;
int frequency[11];
int i=0;
unsigned seed;
printf("Please enter your choice for seed.\n");
printf("(between 1-10)");
while (scanf("%u", &seed) == 1)
{
srand1(seed);
for(i=0; i < 1000; i++)
{
rand_array[i]=rand1()%(end-start+1)+start;
frequency[rand_array[i]]++;
}
for(i = 1; i < 11; i++)
{
printf("There are %d %d's\n", frequency[i], i);
}
}
return 0;
}
int rand1(void)
{
static unsigned long int next = 1;
next = next * 1103515245 + 12345;
return (unsigned int) (next/65536) % 32768;
}
void srand1(unsigned int seed)
{
static unsigned long int next = 1;
next = seed;
}
聲明'* rand_array = rand1()%(end-start + 1)+ start;'只爲'rand_array'的第一個值賦值隨機數。你應該使用'rand_array [count]'。此外,第二次調用'scanf'(或者'printf')不是for循環的一部分。 – 2012-08-12 23:02:20
和第一個scanf是在一個while循環出於某種原因 – Gir 2012-08-12 23:03:53
我同意,但* rand_array = rand1()%(end-start + 1)+ start;確實允許以下打印語句輸出1000個數字。編譯並運行時,屏幕上會顯示1到10之間的1000個隨機數字。我只是不知道如何利用輸出,因此它可以進行排序和/或分析...... – user1593866 2012-08-12 23:10:57