首页 新闻 会员 周边 捐助

c++作业 ctime如何短时间生成不一样的随机数

0
悬赏园豆:10 [待解决问题]

题目要求利用一维数组保存系统随机产生的10个两位正整数,然后利用选择排序方法按照从小到大的次序排列并显示出来

我的代码:

include<iostream>

include<cstdlib>

include<ctime>

using namespace std;

int main()
{
int arr[10],num;
for(int i=0;i<10;i++)

{
	//srand((unsigned int)time(NULL));
	srand(time(0)); 
	int num = 10+rand()%100;
	arr[i]=num;
}

for(int h = 0;h<10-1;h++)
{
	for(int j = 0;j<10-h-1;j++)
	{
		if(arr[j]>arr[j+1])
		{
			int temp = arr[j];
			arr[j]=arr[j+1];
			arr[j+1]=temp;
		}
	}
}

for( int k = 0;k < 10;k++)
{
	cout<<arr[k]<<endl;
}

return 0;

}

运行结果:

总是只能生成一个数 怎么解决啊 大佬们 真心求教

失落の冬的主页 失落の冬 | 初学一级 | 园豆:192
提问于:2024-05-16 18:14
< >
分享
所有回答(2)
1

把srand放到循环外面只调用一次就可以了.

www378660084 | 园豆:1141 (小虾三级) | 2024-05-16 18:29

弄好了 谢谢您

支持(0) 反对(0) 失落の冬 | 园豆:192 (初学一级) | 2024-05-16 18:31
0

在你的代码中,随机数生成的部分应该放在循环外面,以确保每次迭代都能够生成新的随机数。

cpp
Copy code

include <iostream>

include <cstdlib>

include <ctime>

using namespace std;

int main()
{
int arr[10];

// 种子放在循环外面
srand(time(0));

for(int i = 0; i < 10; i++)
{
    // 生成随机数并存入数组
    int num = 10 + rand() % 90; // 生成范围为10到99的随机数
    arr[i] = num;
}

// 选择排序
for(int h = 0; h < 10 - 1; h++)
{
    for(int j = 0; j < 10 - h - 1; j++)
    {
        if(arr[j] > arr[j + 1])
        {
            int temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
}

// 显示排序后的数组
for(int k = 0; k < 10; k++)
{
    cout << arr[k] << endl;
}

return 0;

}
这样就能够确保每次迭代都能够生成新的随机数了。

Technologyforgood | 园豆:7541 (大侠五级) | 2024-05-16 20:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册