我是一個自學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