我是一个自学C++的课本,我有一个问题需要解决,下面概述。如何在一个类构造函数内的一个设定范围内(不重复!)生成随机int数?
我有下面的类结构:
#include <iostream>
#include <cstdio>
#include <ctime>
using namespace std;
class classroom{
char name[25];
int student_id;
float grades[10];
float average;
int num_tests;
float letter_grade;
public:
void enter_name_id(void);
void enter_grade(void);
void average_grades(void);
void letter_grades(void);
void output_name_id_grade(void);
classroom();
};
而且我对上面的类下面的构造:
classroom::classroom(){
int i;
srand((unsigned)time(0));
int random_integer=0;
random_integer = (rand()%5) + (rand()%5);
num_tests=0;
average=0.0;
for(i=0;i<10;i++){
grades[i]=0.0;
}
for(i=0;i<27;i++){
name[i]='-';
}
cout<<"\n*****************Finished*****************";
}
将有3名学生在main
宣布这一类结构:
int main()
{
classroom students[3];
//and so...
}
我需要生成一个唯一的学生每个学生在一个值范围内的每个学生的ID,例如0到10.
我已将以下代码片段复制到构造函数中。它生成我的随机数,我所期望的范围内:
srand((unsigned)time(0));
int random_integer=0;
random_integer = (rand()%5) + (rand()%5);
的问题是,我需要得到的生成随机数的范围内排除任何重复的。
纠错:int random_integer = 0;应该读取int random_integer; –
为什么你1)使用这2个随机数的总和(基本上*不是*给你一个在所需范围内的随机数)2)假设一个随机数可以作为一个标识符? – Tibo
请注意,班级名称非常具有误导性 - 该物品似乎比“教室”更接近“学生”。你应该考虑命名你的类,就像你描述它们一样 - 在这种情况下,它们代表和包含关于学生的数据 - 所以它们应该被命名为“Student”。 – jedwards