C++【生成16個不重複字母】(生成不重複隨機數)

熱愛技術的小小白發表於2020-12-24

常規做法:生成一個隨機數,存在陣列中。往後每次生成一個隨機數,都需要遍歷前面的陣列,如果相同則需要重新生成一個隨機數,再重新比較一遍,這樣非常麻煩!

改進版做法:先得到一個26個字母組成的陣列,再用隨機數把陣列打亂(兩兩交換即可實現)

#include<iostream>
using  namespace std;

int main
{
    const int N = 16;//不重複字母陣列的長度
	srand((unsigned int)time(0));//生成隨機數
	char arr[26];
	for (int i = 0; i < 26; i++) arr[i] = 'a' + i;//生成一個26個字母的陣列(順序)
	for (int i = 0; i < N; i++)//將字母陣列打亂順序
	{
		int p = rand() % 26, q = rand() % 26;
		int temp = arr[p];
		arr[p] = arr[q];
		arr[q] = temp;
	}
	//輸出結果:
	//取該陣列的前16為就是我們需要的陣列了
	for (int i = 0; i < N; i++)
	{
		cout << arr[i]<<" ";
	}
}

在這裡插入圖片描述

相關文章