生成随机数,但需要有一个特定的数字

Generate random number but required to have a certain number

本文关键字:有一个 数字 随机数      更新时间:2024-09-29

我正在尝试创建一个4不同数字的序列,并从0100随机生成,但它必须有数字86,以下是我所做的:

#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
srand((unsigned) time(NULL));
// Loop to get 3 random numbers
for(int i = 0; i < 3; i++)
{
int random = rand() % 101;
// Print the random number
cout << random << endl;
}
cout << 86 << endl;
}

但我不想把86放在最后,有什么方法可以把它放在序列中的任何随机位置吗?谢谢

我使用现代C++的方法

#include <algorithm>
#include <iostream>
#include <array>
#include <random>
namespace {
std::default_random_engine generator(std::random_device{}());
int random(int min, int max) {
return std::uniform_int_distribution<int>{min, max}(generator);
}
}
int main() {   
std::array<int, 4> elements = {86};
for (int i = 1; i < elements.size(); ++i) {
elements[i] = random(0, 100);
}
std::shuffle(elements.begin(), elements.end(), generator);        
for (int nbr : elements) {
std::cout << nbr << "n";
}
return 0; 
}

你可以完全按照你说的做——把它放在一个随机的位置。首先,将要生成的四个数字存储在一个数组中;然后,你决定哪个位置是86;然后,你填写剩下的并打印出来。

int main()
{
srand((unsigned) time(NULL));
int nums[4];
int loc86 = rand() % 4;
for(int i = 0; i < 4; i++)
{
nums[i] = i != loc86 ? rand() % 101 : 86;
}
for(int i = 0; i < 4; i++)
{
// Print the random number
cout << num[i] << endl;
}
}

有点离题,但如果您真的关心随机数生成的精度(并且它足够好地接近均匀随机分布(,您可以使用这里描述的实用的c++随机数生成器。

的两种方法

#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
srand((unsigned) time(NULL));
// Take a random position
const int j = rand() % 4;

// Loop to get 3 random numbers
for(int i = 0; i < 4; i++)
{
if (i == j)
cout << 86 << endl;
else    
cout << rand() % 101 << end;
}
}
#include<iostream>
#include<algorithm>
#include<cstdlib>
using namespace std;
int main()
{
srand((unsigned) time(NULL));
// Fill and shuffle the array
int r[4] = {86, rand() % 101, rand() % 101, rand() % 101};

std::shuffle(std::begin(r), std::end(r));
for(int i = 0; i < 4; i++)
cout << r[i] << end;
}
相关文章: