生成唯一的随机字符并将其保存在数组中

Generating unique random characters and saving them in array

本文关键字:保存 存在 数组 唯一 随机 字符      更新时间:2023-10-16

我想生成随机数并将它们保存在数组中。 这就是全部! 但重点是,我想避免重复并且在数组中没有两次或更多次的数字。

我的代码 :

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
    int k, temp;
    cin >> k;
    int sym[k];
    srand(time(NULL));
    for (int i = 0; i < k; i++)
    {
        temp = rand() % 25 + 97;
        for(int j=0; j<i; j++)
        {
            while(temp == sym[j])
            {
                temp = rand() % 25 + 97; // 25 means a and 122 means z
            }
        }
        sym[i] = temp;
    }
    for(int i=0; i<k; i++)
    {
        cout << sym[i] << endl;
    }
    return 0;
}

我仍然得到重复的结果。

我将使用 std::unordered_set 来避免重复

随机生成器并不意味着唯一生成,冲突总是会发生,尤其是当生成的值数量很多并且生成的边界或限制很小时......

为避免重复元素,请替换此数组

int sym[k];

通过一个不允许重复条目的容器集......

std::set<int>

之后,你需要替换逻辑,因为循环 k 次并不意味着集合中有 k 个元素,所以你需要做一个 while 循环,直到集合的大小达到极限 k

编辑:

如果需要一些未排序的生成值,请考虑实现unordered_set而不是使用集合

相关文章: