编写shell脚本,生成100个不重复且不可完全连续的随机数。随机数取值范围0~100内
时间: 2023-03-29 13:04:34 浏览: 129
可以使用以下的shell脚本来生成100个不重复且不可完全连续的随机数:
```shell
#!/bin/bash
# 生成100个不重复且不可完全连续的随机数
# 取值范围~100内
# 初始化数组
for ((i=; i<=100; i++))
do
arr[i]=
done
# 生成随机数
for ((i=1; i<=100; i++))
do
while true
do
num=$RANDOM
num=$((num%101))
if [ ${arr[num]} -eq ] && [ ${arr[num-1]} -eq ] && [ ${arr[num+1]} -eq ]
then
arr[num]=1
echo $num
break
fi
done
done
```
这个脚本使用了一个数组来记录已经生成的随机数,然后使用一个循环来生成100个随机数。在每次生成随机数时,先判断这个数是否已经生成过,以及它的前一个数和后一个数是否已经生成过,如果都没有生成过,就将这个数记录到数组中,并输出它。这样就可以保证生成的随机数不重复且不可完全连续。
相关问题
生成一个随机数范围1~280,数字中不带4的bat脚本程序
以下是一个生成1到280范围内不包含数字4的随机数的批处理(.bat)脚本示例:
```bat
@echo off
setlocal
:GENERATE_RANDOM_NUMBER
set /a "randomNumber=%RANDOM% %% 280 + 1" // 生成1到280范围内的随机数
rem 检查随机数是否包含数字4
set "num=%randomNumber%"
setlocal enabledelayedexpansion
if "!num:4=!"=="%num%" (
endlocal
goto PRINT_RANDOM_NUMBER
) else (
endlocal
goto GENERATE_RANDOM_NUMBER
)
:PRINT_RANDOM_NUMBER
echo 随机数: %randomNumber%
endlocal
```
这个批处理脚本使用了 `%RANDOM%` 内置变量来生成0到32767之间的随机数。通过 `%RANDOM% %% 280 + 1` 可以生成1到280范围内的随机数。
然后,脚本检查生成的随机数中是否包含数字4。它通过将随机数转换为字符串,并使用字符串替换操作符 `!num:4=!` 来检查是否还包含数字4。如果替换后的字符串与原始字符串相同,则说明随机数中不包含数字4。否则,将重新生成随机数。
最后,将生成的随机数打印输出。
请注意,由于批处理脚本的限制,这种方法可能不会生成真正均匀分布的随机数。如果需要更好的随机性和分布,请考虑使用其他编程语言来实现。
生成一个随机数范围1~280,数字中不带4的脚本
这是一个生成1到280范围内不带数字4的随机数的 C++ 代码示例:
```cpp
#include <iostream>
#include <random>
#include <ctime>
int generateRandomNumber() {
std::mt19937 rng(std::time(nullptr)); // 使用时间作为随机数种子
std::uniform_int_distribution<int> dist(1, 280); // 定义随机数生成范围为1到280
int randomNumber = dist(rng); // 生成随机数
while (randomNumber % 10 == 4 || randomNumber / 10 == 4) {
randomNumber = dist(rng); // 如果生成的随机数包含数字4,则重新生成
}
return randomNumber;
}
int main() {
int randomNumber = generateRandomNumber();
std::cout << "随机数: " << randomNumber << std::endl;
return 0;
}
```
这段代码使用 `<random>` 库中的 `std::mt19937` 和 `std::uniform_int_distribution` 来生成随机数。它使用当前时间作为种子初始化随机数生成器 `rng`,并定义了一个范围为1到280的均匀分布。然后,它生成一个随机数并检查该数是否包含数字4。如果包含,则重新生成,直到生成的随机数不包含数字4为止。最后,将生成的随机数打印输出。
请注意,在每次运行程序时,由于种子不同,生成的随机数序列也会不同。