Board logo

标题: [其他] 随机数问题 [打印本页]

作者: 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 编辑
  1. import random
  2. import math
  3. max = random.randint(9999, 999999)
  4. min = random.randint(0, (max - 2))
  5. n = random.randint(1, ((max - min) - 1))
  6. a = random.randint((min + 100), (min + 3))
  7. for __count in range(n):
  8.     if (a + 1 < max - 1 or max - 1 < a + 1):
  9.         if (a < max):
  10.             b = 0
  11.             b = random.randint((a + 1), (max - 1))
  12.             print(b)
  13.             a = 0
  14.             a = b
  15.         else:
  16.             b = 0
  17.             b = random.randint((max - 1), (a + 1))
  18.             print(b)
  19.             a = 0
  20.             a = b
  21.     else:
  22.         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 编辑
  1. @echo off
  2. set "max=100"
  3. set "min=40"
  4. set "n=20"
  5. REM 空格不能去掉
  6. set "str= "
  7. :loop
  8. set /a "a=%random%%%(%max%-%min%+1)+%min%"
  9. call set "newStr=%%str:%a%=%%"
  10. if "%newStr%" equ "%str%" (
  11. REM 不重复,添加进字符串
  12. set "str=%str% %a%"
  13. set /a "n-=1"
  14. )
  15. if "%n%" neq "0" goto :loop
  16. REM 拼接成了字符串,用for自己截取数字即可
  17. echo %str%
  18. 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


   
4# Aub

作者: 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
  1.     set "max=100"
  2.     set "min=40"
  3.     set "n=20"
复制代码
???
  1.     set max=100
  2.     set min=40
  3.     set n=20
复制代码
就行了
作者: went    时间: 2020-3-26 18:38

回复 16# Aub


    获取的数字太多就没法了,字符串长度不够,会闪退
作者: Aub    时间: 2020-3-27 17:39

本帖最后由 Aub 于 2020-3-27 17:47 编辑
  1. @echo off
  2. Set v=0
  3. Set max=%RANDOM%
  4. Set /a ma=!max!+0
  5. Set min=%RANDOM%
  6. Set /a mi=!min!+0
  7. Set /a c=!min!-1
  8. Set /a d=!max!+1
  9. if /i d>=c Set /a min=!d!+0&&Set /a max=!c!+0
  10. set /a n=!RANDOM!%%!max!+!min!
  11. Set /a a=!RANDOM!%%!max-2!+!min-3!
  12. goto 1
  13. :1
  14. Set /a b=!RANDOM!%%!a!+!min-2!
  15. Set /a a=!b!+0
  16. echo b
  17. Set /a v=!v!+1
  18. if /i v<n goto 1
  19. pause
复制代码
bat,ANSI
作者: xczxczxcz    时间: 2020-3-28 17:42

  1. $min, $max, $n = -999999, 999999, 30; # 6位数。
  2. ((get-random -input ($min..$max) -count $n)|sort) -join ' ';
  3. cmd /c pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2