亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

c語言怎么生成不重復的隨機數

小億
214
2024-02-26 16:16:40
欄目: 編程語言

在C語言中,可以使用rand()函數生成隨機數,但是要生成不重復的隨機數,可以采用以下方法:

  1. 使用數組存儲已經生成的隨機數,每次生成新的隨機數時,先檢查數組中是否已經存在該隨機數,如果存在則重新生成,直到生成一個不重復的隨機數。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    int nums[10]; // 存儲生成的隨機數
    int index = 0;

    srand((unsigned)time(NULL)); // 初始化隨機數種子

    while (index < 10) {
        int new_num = rand() % 100; // 生成0~99的隨機數

        // 檢查數組中是否已經存在該隨機數
        int i;
        int is_duplicate = 0;
        for (i = 0; i < index; i++) {
            if (nums[i] == new_num) {
                is_duplicate = 1;
                break;
            }
        }

        if (!is_duplicate) {
            nums[index] = new_num;
            index++;
        }
    }

    // 輸出生成的不重復隨機數
    for (int i = 0; i < 10; i++) {
        printf("%d ", nums[i]);
    }

    return 0;
}
  1. 可以使用洗牌算法(Fisher–Yates shuffle)生成一個隨機排列,然后取前n個元素作為不重復的隨機數。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void shuffleArray(int arr[], int n) {
    srand((unsigned)time(NULL));

    for (int i = n - 1; i > 0; i--) {
        int j = rand() % (i + 1);
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

int main() {
    int nums[10]; // 存儲生成的隨機數

    for (int i = 0; i < 10; i++) {
        nums[i] = i;
    }

    shuffleArray(nums, 10);

    // 輸出生成的不重復隨機數
    for (int i = 0; i < 10; i++) {
        printf("%d ", nums[i]);
    }

    return 0;
}

以上是兩種生成不重復的隨機數的方法,可以根據實際需求選擇合適的方法。

0
称多县| 湛江市| 利津县| 珲春市| 钟祥市| 修水县| 饶河县| 甘孜| 沙坪坝区| 汉寿县| 浦东新区| 辽阳市| 都匀市| 莒南县| 澄江县| 九台市| 惠来县| 白河县| 祁门县| 宾阳县| 保山市| 宾川县| 洱源县| 南丹县| 城口县| 北碚区| 禹州市| 安远县| 襄垣县| 高碑店市| 姚安县| 铅山县| 巴彦县| 斗六市| 大方县| 邹城市| 彩票| 西昌市| 永修县| 福贡县| 磐石市|