#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int n,c;
cout<<"Enter number of items to be sorted: ";
cin>>n;
int data[n];
cout<<"Unsorted Array: \n";
for (int x=0;x<n;x++)
{
data[x]=rand();
cout<<data[x]<<"\t";
}
cout<<endl;
}
此代码生成没有特定顺序的随机数。如何使此代码以升序或降序生成随机数。
我已经尝试在这个论坛中搜索,但我发现只是生成没有订单的随机数字。
任何帮助将不胜感激。 提前谢谢。
答案 0 :(得分:1)
您无法:出于某种原因,他们被称为随机。如果您需要一个排序的随机数组,您应首先填充数组,然后对其进行排序。另外,如果您有c ++ 11,我建议将std::array
用于固定大小的数组。
std::vector<int> data;
for (int x=0;x<n;x++)
{
data.push_back(rand());
}
std::sort(data.begin(), data.end());
答案 1 :(得分:1)
我不认为,有一个内置的解决方案。根据您想要的统计属性,您可以生成n个数字并在之后对它们进行排序,或者只是将ne随机数添加到前一个。
在c ++ 11中,Btw rand或多或少已被弃用。您应该使用随机标头中的工具。
int main() {
//init generator with number from true random device
mt19937 gen(random_device{}());
//define desired distribution equal to what you would get with rand()
uniform_int_distribution<> dist(0, RAND_MAX);
int n;
cout << "Enter number of items to be sorted: ";
cin >> n;
//generate numbers
vector<int> data;
for (int x = 0; x < n; x++) {
data.push_back(dist(gen));
}
//sort numbers
sort(begin(data), end(data));
//print numbers
for (auto& e : data) {
cout << e << "\t";
}
cout << endl;
}
答案 2 :(得分:1)
您可以使用:
sum=0;
for(i=1;i<=n;++i)
{
sum+=random(100);
arr[i]=sum;
}
答案 3 :(得分:1)
这是在Java上不进行排序的一种方法,假设您想要所有正整数(显然可以调整数组长度):
public static void main(String[] args) {
Random rndm = new Random();
int arrayLength = 10;
int randOutput;
int checkAscend;
//determining array size
int[] array = new int[arrayLength];
//populating array with random ascending integers
for(int i = 0;i < arrayLength;i++) {
if(i == 0) {
checkAscend = 0;
}
else {
checkAscend = array[i - 1];
}
randOutput = rndm.nextInt();
if(randOutput > checkAscend) {
array[i] = randOutput;
}
else {
i--;
continue;
}
}
System.out.println(Arrays.toString(array));
}