没有双数字
No Double Numbers
本文关键字:数字 更新时间:2023-10-16
我正在做一个强力球彩票,数字将按升序进行气泡排序。快速选择(QP(将在1-56之间,强力球(PB(将在1-46之间。我已经处理了那么多,但我在QP中创建限制时遇到了麻烦,所以不会有双数字。例如1、5、5、32、55。
是否可以使用if-then-else语句创建该限制
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
int size;
int arr[5] = {0, 1, 2, 3, 4};
int i=0;
int PowerBall[1] = {0};
int QP()
{
srand(time(NULL));
for (int i=0; i<5; i++) /
arr[i] = rand() % 56 + 1;
return 0;
}
int PB()
{
srand(time(NULL));
for (int i=0; i<5; i++)
PowerBall[i] = rand() % 56 + 1;
return 0;
}
void bubbleSort(int arr[], int size) //bubble sort function
{
bool swapped = true;
int j = 0;
int tmp;
while (swapped)
{
swapped = false;
j++;
for (int i = 0; i < size - j; i++) {
if (arr[i+1] < arr[i]) {
tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
swapped = true;
}
}
}
}
void print()
{
for (int i = 0; i < 5; i++)
cout << arr[i] << setw(8);
cout << PowerBall[i] << endl;
}
int main()
{
QP();
bubbleSort(arr, 5);
PB();
print();
system("pause");
return 0;
}
将数字放在一个集合中以排除多重性(它们也会自动排序(
int newNum;
set<int> numSet;
for (int i(0); i < 5; ++i)
{
// calculate a number
while (!numSet.insert(newNum).second)
{
// calculate another number
numSet.insert(newNum);
}
}
请注意,一旦您超过了快速拾取集(56(的能力,就无法进行新的插入,并且最终会出现无限循环(您可能需要在其中添加一个复选框(
一种可能性是费雪-耶茨洗牌。在你的情况下,它看起来是这样的:
int number_list[56];
for (int i = 0; i < 56; i++)
number_list[i] = i + 1; // Initialise number_list
for (int i = 0; i < 5; i++) {
int r = rand() % (56 - i);
// Exchange number_list[i] and number_list[i + r]
int t = number_list[i];
number_list[i] = number_list[i + r];
number_list[i + r] = t;
}
现在您只需读取number_list
数组中的前五个值:number_list[0],...,number_list[4]
我已经在这个视频链接上发布了一个完整的工作程序。
从数组qp_source_arr[56]中随机取数,其中qp_source_arr[i]=i+1;
然后,当您随机选择一个索引时,j=rand%56+1 arr[i]=gp_source_arr[j];gp_source_arr[j]=-1;
在这一点之后,当你再次选择-1,直到你得到一些不是-1的东西。
我希望这能帮助你,我不会写整个代码,因为你应该实现自己的代码,这似乎是家庭作业:D
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何用数字处理log(0)
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 查找最接近的大于当前数字的数字的索引
- 找到两对数字,使它们的乘积的绝对差最小化
- 我想做一个彼此不同但重复出现的数字
- 将数字转换为字母(例如:123 转换为一二三)
- C++如何计算用户输入的数字中的偶数位数
- 如何在C++中确定文本文件中的元素是字符还是数字
- 打印数字图案
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 如何检查一个c++字符串中有多少相同的字符/数字
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 将数字打印成文字
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 在将数字随机生成为数组期间从内存输出随机数的数组