中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
进贤县| 勃利县| 二连浩特市| 宁南县| 富阳市| 阿鲁科尔沁旗| 始兴县| 旅游| 安岳县| 双城市| 邛崃市| 泰来县| 锦屏县| 江西省| 自贡市| 辽宁省| 莒南县| 丹凤县| 游戏| 大名县| 河池市| 石楼县| 湘乡市| 广东省| 乐安县| 麻栗坡县| 焉耆| 广昌县| 宜都市| 镇原县| 通山县| 佛坪县| 若羌县| 太保市| 农安县| 高邮市| 西乡县| 沭阳县| 清新县| 达尔| 额济纳旗|