java产生不重复随机学生学号,学生求大神带,在线等急把四十个人随机分成八个组每组五人,输入...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

public class Demo {

public static void main(String[] args) {

int group[]=getGroup(3);

for (int i = 0; i < group.length; i++) {

System.out.println(group[i]);

}

}

public static int[] getGroups(){

//初始40个学号

int groups[]=new int[40];

for(int i=0;i<40;i++){

groups[i]=i+1;

}

//分组

int temps[]=new int[40];

for(int i=0;i<40;i++){

Random r = new Random();

int temp=r.nextInt(40);

if(i==0){

temps[0]=temp;

}

if(i>0){

for(int j=0;j

if(temps[j]!=temp&&j==i-1){

temps[i]=temp;

}

if(temps[j]==temp){

i--;

break;

}

}

}

}

//重新得到顺序

int regroups[]=new int[40];

for(int i=0;i<40;i++){

regroups[i]=groups[temps[i]];

}

return regroups;

}

public static int[] getGroup(int number){

int regroups[]=getGroups();

int tempNum = 0;

for(int i=0;i

if(regroups[i]==number){

tempNum=i;

break;

}

}

int num=tempNum/8;

int group[]=new int[8];

for(int i=num*8 ,j=0;i

group[j]=regroups[i];

}

return group;

}

}

在C语言中,为了实现这个功能,我们可以采用一些随机生成函操作。以下是一个简单的步骤说明: 1. 首先,创建一个数`students`来存储55个人的信息,包括他们的学号。 ```c #include <stdio.h> #include <stdlib.h> #include <time.h> // 引入时间库,用于生成随机 typedef struct { int student_id; // 学号 } Student; Student students[55]; // 假设学号从0到54 ``` 2. 接着,设置一个随机种子,以便每次运行程序得到不同的结果。这里我们使用当前时间作为种子。 ```c srand(time(0)); ``` 3. 然后编写一个函,负责随机分配学生。可以使用`for`循环和`rand()`函来实现。 ```c void random_grouping(int group_size) { int i, j, k; for (i = 0; i <= 54 - group_size; i++) { // 每次分配一,直到所有人分完 int index1, index2, index3; do { index1 = rand() % (i + 1); // 第一个人 index2 = rand() % (i + 1 - index1); // 第二个人,在剩余的人中随机选 index3 = i - index1 - index2; // 最后一个人是剩余的 } while (index1 == index2 || index1 == index3 || index2 == index3); students[i * group_size + 0].student_id = students[index1].student_id; students[i * group_size + 1].student_id = students[index2].student_id; students[i * group_size + 2].student_id = students[index3].student_id; } } ``` 4. 最后,调用该函并打印分后的结果,如果需要的话。 ```c int main() { random_grouping(3); for (i = 0; i < 55; i += 3) { printf("Group %d: %d, %d, %d\n", i / 3 + 1, students[i].student_id, students[i + 1].student_id, students[i + 2].student_id); } return 0; } ``` 注意:这个例子假设了学生信息只包含学号,实际应用中可能会有更多信息,并且上述代码并未处理可能出现的内存越界错误。在实际项目中,应考虑使用结构体或者其他据结构来保存更详细的学生信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值