Random 生成一个与另一个数字足够远的随机数
设Random 生成一个与另一个数字足够远的随机数,random,Random,设x,range,d为整数。我们想生成一个数字y,这样 1这是一个Python函数,您应该能够适应您选择的语言: import random def distantRand(a,b,x,d): #returns a random integer in range a ... b #which is greater than or equal to d units from x lb = max(a,x-d+1) ub = min(b,x+d-1) k
x,range,d
为整数。我们想生成一个数字y
,这样
1这是一个Python函数,您应该能够适应您选择的语言:
import random def distantRand(a,b,x,d): #returns a random integer in range a ... b #which is greater than or equal to d units from x lb = max(a,x-d+1) ub = min(b,x+d-1) k = ub-lb+1 #number of numbers ruled out if b-k < a: return None else: y = random.randint(a,b-k) if y > x - d: y = y + k return y
我已经在Python中这样做了
这是一个defimport random range=100 d=20 x=115 while(True): y=random.randint(1,range) if abs(x-y)>=d: print abs(x-y) print y break
import random r=100 d=20 x=115 def yourandom (x,d,r): while(True): y=random.randint(1,r) if abs(x-y)>=d: print "abs(x-y)=",abs(x-y) print "y=",y break yourandom(x,d,r)
选择您想要的距离
,然后将随机数添加到其中是一种选择吗?这样,d
将是随机的,并且始终处于所需的距离。d+y
可能是负数,例如x-d
@marmistrz Good point。我更加注意如何计算distantRand(1,10,2,4)
。这对于较小的k
来说是完全合理的,但是对于较大的d
来说效率会明显降低。如果d
循环可以运行数百次。尽管如此,我知道这是一个可行的想法,但我对他的帖子有点不清楚。我以为他只是想快速解决问题。还有一些事情要考虑。正在处理;)而且,如果我们有足够多的坏运气,循环可能永远运行。错误检查是相当困难的,有时快速而肮脏的方法是完全合理的。x=500,d=499,range=1000
import random r=100 d=20 x=115 def yourandom (x,d,r): while(True): y=random.randint(1,r) if abs(x-y)>=d: print "abs(x-y)=",abs(x-y) print "y=",y break yourandom(x,d,r)