C語言生成隨機數問題,C語言如何生成不重複的隨機數

發布 科學 2024-08-16
2個回答
  1. 匿名使用者2024-02-01

    LS 的 ** 是錯誤的。

    請參閱下面的**。

    #include

    #include

    using namespace std;

    void rand( int *array, int num);

    功能:用陣列生成 num 個隨機數。

    int main()

    srand( time( 0 )

    int a[10];

    rand( a, 10 );

    cout<< "---" cout<< a[i] return 0;

    void rand( int *array, int num)

    int i = 0;

    array[i] = rand() 100;生產第乙個。

    i = 1;準備生產第二個。

    for( ;i < num ;

    array[i] = rand()%100;

    for( int j=0;j 實現最後乙個,並將其與前乙個進行比較。

    if( array[j] != array[i] )

    if( j == (i-1) )

    直到最後乙個,下乙個才準備好生產。

    i++;break;

    否則,如果有相同的,它立即退出迴圈並重新生成隨機數,並且不新增 i。

    break;

    你上面寫的程式很不靈活,如果你想生產5個,你的**是不是要改變很多? 讓我們使用我為您編寫的函式。

    最後要強調的一點是:

    void rand( int *array, int num);

    將引數傳遞給 num 時,它不能大於 array[i] = rand()%100; 在100中

    否則,這是乙個無休止的迴圈,為什麼? 你自己想想,不要我什麼都說,不明白就不要給我發資訊,我會告訴你的。 哈哈,測試一下自己的智力。

  2. 匿名使用者2024-01-31

    用乙個數字組裝乙個隨機數,乙個陣列表示已經記錄的隨機數;

    例如,隨機 0-8 生成乙個隨機的 8 位陣列,陣列中沒有重複的專案;

    例如 intarray[8];

    intarrayindex[8]=;

    intk=0;

    srand(100);

    while(k<8){

    intq=rand()%8+1;

    if(arrayindex[q-1]==1){continue;

    array[k]=q;

    arrayindex[q-1]=1;

    k++;擴充套件材料c 語言隨機輸出 1 20 個不重複的隨機數。

    #include

    #include

    #include

    voidmain()

    inta[20];

    inti,j;

    srand((int)time(0));

    a[0]=rand()%20+1;

    for(i=1;i<20;i++)

    a[i]=rand()%20+1;

    for(j=0;jif(a[i]==a[j])i--;for(i=0;i<20;i++)printf("%3dn",a[i]);

相關回答
14個回答2024-08-16

#include ""

#include "" >>>More

5個回答2024-08-16

這裡使用了 rand() 函式和 srand() 函式,C C++ 中沒有 random(int number) 函式。 >>>More

5個回答2024-08-16

SRAND生成乙個隨機種子,該種子被傳遞到系統內部的隨機數生成器。 >>>More

8個回答2024-08-16

為最初給定的種子生成相同的序列,因為每次呼叫 rnd 函式都使用序列中的前乙個數字作為下乙個數字的種子。 >>>More

10個回答2024-08-16

rnd*(上限,下限+1)+下限,如果要求生成的隨機數包含上限(本題中為100),則為正確。 >>>More