c++ - 从随机范围中排除一个数字

标签 c++ random

我想在每次迭代中从特定范围生成一个随机数

for (int i = 0; i < 10; i++)
{
    v1[i] = rand() % n;
}

此代码将生成一个介于 09 之间的数字。但是,我不希望所选数字与索引 i 相同。例如,如果我在第一次迭代中(即:i == 1),我希望随机数为 0、2、3、4、5、6、7、8, 9 而不是 1。

有人可以帮我吗?

最佳答案

如果您想排除一个数字,只需从可能的选择集中删除最大的数字,如果您碰巧选择了您不想要的数字,请选择最大的数字。

例如,如果你想在0到9之间选择一个数字,但它不应该是数字1,那么就在0到8之间选择一个数字。如果你选择1,那就选择9。

关于c++ - 从随机范围中排除一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31183048/

相关文章:

c# - 骰子游戏的随机数

javascript - jQuery 删除先前随机选择和显示的段落并重新显示随机选择的段落

random - 将随机数生成器种子设置为 "random"数字

java - 传递给 Java 随机数生成器的种子值如何影响其输出?

c++ - 在 std::set 的定义中将 const_iterator 强制转换为 iterator&

c++ - new[n] 并使用 delete 删除每个位置,而不是使用 delete[] 删除整个 block

c++ - 具有线程支持和 Bcast 调用的 MPI

c++ - 在什么情况下我们需要包含<cassert>?

c# - RandomNumberGenerator 与 Aes 生成 key 。使用 AES 加密时,我应该使用哪个来获取 key (C#)

c++ - Windows 上 C++ 中的位图操作