标题: [其他] 随机数问题 [打印本页]
作者: chouxia 时间: 2020-3-25 08:57 标题: 随机数问题
现在需要一段代码来取随机数,
set max=
set min=
set n=
......
取max到min之间的数,取N个数。N小于max-min。数字不能相同
求代码 拜谢
作者: netdzb 时间: 2020-3-25 09:33
本帖最后由 netdzb 于 2020-3-25 12:43 编辑
回复 1# chouxia
import random
max = 100
min = 10
n = 5
for i in range(n):
print(random.randint(min,max))
这要求用python还是挺容易的。
作者: netdzb 时间: 2020-3-25 09:40
本帖最后由 netdzb 于 2020-3-25 12:44 编辑
回复 1# chouxia
你到底要做什么东西?
运行的结果如下:
84
93
70
50
37
作者: Aub 时间: 2020-3-25 15:04
本帖最后由 Aub 于 2020-3-26 18:18 编辑
- import random
- import math
-
-
- max = random.randint(9999, 999999)
- min = random.randint(0, (max - 2))
- n = random.randint(1, ((max - min) - 1))
- a = random.randint((min + 100), (min + 3))
- for __count in range(n):
- if (a + 1 < max - 1 or max - 1 < a + 1):
- if (a < max):
- b = 0
- b = random.randint((a + 1), (max - 1))
- print(b)
- a = 0
- a = b
- else:
- b = 0
- b = random.randint((max - 1), (a + 1))
- print(b)
- a = 0
- a = b
- else:
- print('stop')
复制代码
要做不重复数还挺复杂的
作者: Aub 时间: 2020-3-25 15:05
回复 2# netdzb
可能会重复
作者: Aub 时间: 2020-3-25 15:08
回复 4# Aub
Python
作者: netdzb 时间: 2020-3-25 17:09
回复 4# Aub
学习一下你的代码。
作者: went 时间: 2020-3-25 21:41
本帖最后由 went 于 2020-3-25 21:46 编辑
- @echo off
- set "max=100"
- set "min=40"
- set "n=20"
- REM 空格不能去掉
- set "str= "
- :loop
- set /a "a=%random%%%(%max%-%min%+1)+%min%"
- call set "newStr=%%str:%a%=%%"
- if "%newStr%" equ "%str%" (
- REM 不重复,添加进字符串
- set "str=%str% %a%"
- set /a "n-=1"
- )
- if "%n%" neq "0" goto :loop
- REM 拼接成了字符串,用for自己截取数字即可
- echo %str%
- pause&exit
复制代码
保存为bat,ANSI编码
作者: Aub 时间: 2020-3-26 15:21
本帖最后由 Aub 于 2020-3-26 15:49 编辑
回复 8# went
重复了
作者: Aub 时间: 2020-3-26 16:01
回复 7# netdzb
又写错了,现在改了一下
作者: went 时间: 2020-3-26 16:06
回复 9# Aub
字符串长度有限,n值不能过大
你测试的数据是啥
作者: Aub 时间: 2020-3-26 16:10
回复 11# went
作者: went 时间: 2020-3-26 16:17
回复 12# Aub
看不懂Python...
作者: Aub 时间: 2020-3-26 17:02
回复 13# went
你用DOS命令衡量Python
作者: Aub 时间: 2020-3-26 17:03
回复 8# went
标签后不用空格
作者: Aub 时间: 2020-3-26 17:08
回复 11# went
每个至少6位数
作者: Aub 时间: 2020-3-26 17:10
回复 8# went - set "max=100"
- set "min=40"
- set "n=20"
复制代码
???- set max=100
- set min=40
- set n=20
复制代码
就行了
作者: went 时间: 2020-3-26 18:38
回复 16# Aub
获取的数字太多就没法了,字符串长度不够,会闪退
作者: Aub 时间: 2020-3-27 17:39
本帖最后由 Aub 于 2020-3-27 17:47 编辑
- @echo off
- Set v=0
- Set max=%RANDOM%
- Set /a ma=!max!+0
- Set min=%RANDOM%
- Set /a mi=!min!+0
- Set /a c=!min!-1
- Set /a d=!max!+1
- if /i d>=c Set /a min=!d!+0&&Set /a max=!c!+0
- set /a n=!RANDOM!%%!max!+!min!
- Set /a a=!RANDOM!%%!max-2!+!min-3!
- goto 1
- :1
- Set /a b=!RANDOM!%%!a!+!min-2!
- Set /a a=!b!+0
- echo b
- Set /a v=!v!+1
- if /i v<n goto 1
- pause
复制代码
bat,ANSI
作者: xczxczxcz 时间: 2020-3-28 17:42
- $min, $max, $n = -999999, 999999, 30; # 6位数。
- ((get-random -input ($min..$max) -count $n)|sort) -join ' ';
- cmd /c pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |