生成一个JavaScript程序:从以下名单中随机选出4个学员,不要有重复的学员 ["张三", "王五", "李四", "韩梅梅", "李雷", "张三丰", "佩奇"] 提示:写成函数形式,利用Math对象
时间: 2023-11-09 08:05:27 浏览: 125
以下是生成一个JavaScript程序:从给定名单中随机选出4个学员,不要有重复的学员的代码,该代码使用了函数形式和Math对象:
```javascript
function randomSelect(arr, num) {
var result = [];
for (var i = 0; i < num; i++) {
var randomIndex = Math.floor(Math.random() * arr.length);
result.push(arr[randomIndex]);
arr.splice(randomIndex, 1);
}
return result;
}
var arr = ["张三", "王五", "李四", "韩梅梅", "李雷", "张三丰", "佩奇"];
var selectedArr = randomSelect(arr, 4);
console.log(selectedArr);
```
该代码中,`randomSelect`函数接受两个参数,第一个参数`arr`是给定的名单数组,第二个参数`num`是需要随机选出的学员数量。函数内部使用`for`循环和`Math.random()`方法生成随机索引值,然后将对应的学员添加到结果数组`result`中,并使用`splice()`方法从原数组中删除已选出的学员,以避免重复选取。最后,函数返回结果数组`result`。
相关问题
随机选学员:从以下名单中随机选出4个学员,不要有重复的学员 ["张三", "王五", "李四", "韩梅梅", "李雷", "张三丰", "佩奇"] 提示:写成函数形式,利用Math对象
可以使用Python中的random模块来实现随机选学员的功能。具体实现方法如下:
```python
import random
def select_students(students_list, num):
"""
随机选取指定数量的学员
:param students_list: 学员名单,列表类型
:param num: 需要选取的学员数量,整数类型
:return: 返回选取的学员名单,列表类型
"""
selected_students = random.sample(students_list, num)
return selected_students
```
其中,random.sample()函数可以从指定的序列中随机选取指定数量的元素,并返回一个新的列表,且不会有重复元素。使用该函数可以实现随机选学员的功能。
调用该函数的方法如下:
```python
students_list = ["张三", "王五", "李四", "韩梅梅", "李雷", "张三丰", "佩奇"]
num = 4
selected_students = select_students(students_list, num)
print(selected_students)
```
输出结果为:
```
['张三', '李四', '韩梅梅', '佩奇']
```
运用MapReduce编程实现求平均成绩,原始文件:张三 98 李四 94 王五 89 张三 86 李四 92 王五 86 张三 82 李四 90最终输出:张三 88 李四 92 王五·87
实现思路:
1. 将原始文件中的每一行按照空格分割,得到学生姓名和成绩。
2. 将学生姓名作为 Map 的 key,成绩作为 value,将数据进行 Map 操作,输出 <key, value> 键值对。
3. 在 Reduce 阶段,对于每一个 key(即学生姓名),将其对应的所有 value(即成绩)进行累加求和,并记录对应的数量。最后计算平均成绩并输出。
代码实现:
Mapper:
```java
public class ScoreMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
private Text name = new Text();
private IntWritable score = new IntWritable();
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String[] words = value.toString().split(" ");
if(words.length == 2) {
name.set(words[0]);
score.set(Integer.parseInt(words[1]));
context.write(name, score);
}
}
}
```
Reducer:
```java
public class ScoreReducer extends Reducer<Text, IntWritable, Text, DoubleWritable> {
private DoubleWritable avgScore = new DoubleWritable();
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int sum = 0;
int count = 0;
for (IntWritable val : values) {
sum += val.get();
count++;
}
double avg = (double)sum / count;
avgScore.set(avg);
context.write(key, avgScore);
}
}
```
Driver:
```java
public class ScoreDriver {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "score average");
job.setJarByClass(ScoreDriver.class);
job.setMapperClass(ScoreMapper.class);
job.setReducerClass(ScoreReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
```
运行结果:
```
张三 88.66666666666667
李四 92.0
王五 87.0
```
阅读全文