Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 因此,如果超出十六进制边界…+1,您不妨对一个框进行采样并丢弃。这似乎比我的答案更简单:-),但与内部“边缘”点相比,内部“边缘”点的可能性更大(Amadan对我的答案的担忧)。如果我们处理的是纯连续实数(在这种情况下,任意点的概率=0),那么这个问题就没_Algorithm_Language Agnostic_Random_Procedural Generation - Fatal编程技术网

Algorithm 因此,如果超出十六进制边界…+1,您不妨对一个框进行采样并丢弃。这似乎比我的答案更简单:-),但与内部“边缘”点相比,内部“边缘”点的可能性更大(Amadan对我的答案的担忧)。如果我们处理的是纯连续实数(在这种情况下,任意点的概率=0),那么这个问题就没

Algorithm 因此,如果超出十六进制边界…+1,您不妨对一个框进行采样并丢弃。这似乎比我的答案更简单:-),但与内部“边缘”点相比,内部“边缘”点的可能性更大(Amadan对我的答案的担忧)。如果我们处理的是纯连续实数(在这种情况下,任意点的概率=0),那么这个问题就没,algorithm,language-agnostic,random,procedural-generation,Algorithm,Language Agnostic,Random,Procedural Generation,因此,如果超出十六进制边界…+1,您不妨对一个框进行采样并丢弃。这似乎比我的答案更简单:-),但与内部“边缘”点相比,内部“边缘”点的可能性更大(Amadan对我的答案的担忧)。如果我们处理的是纯连续实数(在这种情况下,任意点的概率=0),那么这个问题就没有意义了,但实际上这是一个合理的问题,因为我们只处理有限数量的有理近似。它保证是正六边形吗?如果是,为什么不在问题中说明?如果不是,那么“居中”是什么意思?是的,这是一个规则的六边形-很好的点,编辑以反映。感谢所有非常有趣的解决方案:一个额外的


因此,如果超出十六进制边界…+1,您不妨对一个框进行采样并丢弃。这似乎比我的答案更简单:-),但与内部“边缘”点相比,内部“边缘”点的可能性更大(Amadan对我的答案的担忧)。如果我们处理的是纯连续实数(在这种情况下,任意点的概率=0),那么这个问题就没有意义了,但实际上这是一个合理的问题,因为我们只处理有限数量的有理近似。它保证是正六边形吗?如果是,为什么不在问题中说明?如果不是,那么“居中”是什么意思?是的,这是一个规则的六边形-很好的点,编辑以反映。感谢所有非常有趣的解决方案:一个额外的澄清,它不是绝对必要的,以尽量减少随机数呼叫的数量,当然了helps@mikera:嗯,这似乎无关紧要,因为这里最简单的解决方案可以最大限度地减少对
随机调用的平均次数
!感谢所有人的伟大想法-这是一张显示最终结果的图片:因为我们将处理有限数量的有理数(以及六边形中有限数量的点),这并不能给出这些点的均匀分布,因为得到原点的几率大于得到六边形边上一点的几率。(和阿玛丹回答的问题一样)。但我想这很容易纠正。这个解决方案(原则上也是你的)是连续分布的一个有效浮点实现,其中获得任何特定点的概率为0。唯一的偏差与舍入误差和随机数源的有限精度有关。离散解也是一个好问题,但它与提出的问题不同。作者必须详细说明他想如何离散六边形。我想OP不会关心精确的离散化,并且会很高兴你能提供任何合理的离散化(你已经在做了)。我同意你的观点,顺便说一句。实际上我的解决方案和白痴的是一样的,我只是没有仔细阅读。在正面,我对它进行了编码。第一块代码是一个函数,它在六边形中生成一个随机晶格点。第二个块调用该函数500次并绘制结果。第三段代码显示了函数中使用的引导菱形。事实上,想想看,这并不是很统一,因为靠近圆心的树彼此更接近。也就是说,两个θ值t1和t2上的树在“极点”附近的物理距离要比在圆的边缘更近。
    F ____ B
     /\  /\
  A /__\/__\ E
    \  /\  /
     \/__\/
     D     C
R = random(); //Generate a random number called R between 0-1

S = random(); //Generate a random number called S between 0-1

if(R + S >=1)
{
R = 1 – R;
S = 1 – S;
}
from math import sqrt
from random import randrange, random
from matplotlib import pyplot

vectors = [(-1.,0),(.5,sqrt(3.)/2.),(.5,-sqrt(3.)/2.)]

def randinunithex():
    x = randrange(3);
    (v1,v2) = (vectors[x], vectors[(x+1)%3])
    (x,y) = (random(),random())
    return (x*v1[0]+y*v2[0],x*v1[1]+y*v2[1])

for n in xrange(500):
    v = randinunithex()
    pyplot.plot([v[0]],[v[1]],'ro')

pyplot.show()
from math import sqrt
from random import randrange, random
from matplotlib import pyplot

size = 10

vectors = [(-1.,0),(.5,sqrt(3.)/2.),(.5,-sqrt(3.)/2.)]

def randinunithex():
    if not randrange(3*size*size+1): return (0,0)
    t = randrange(3);
    (v1,v2) = (vectors[t], vectors[(t+1)%3])
    (x,y) = (randrange(0,size),randrange(1,size))
    return (x*v1[0]+y*v2[0],x*v1[1]+y*v2[1])

# Plot 500 random points in the hexagon
for n in xrange(500):
    v = randinunithex()
    pyplot.plot([v[0]],[v[1]],'ro')

# Show the trimmed rhombuses
for t in xrange(3):
    (v1,v2) = (vectors[t], vectors[(t+1)%3])
    corners = [(0,1),(0,size-1),(size-1,size-1),(size-1,1),(0,1)]
    corners = [(x*v1[0]+y*v2[0],x*v1[1]+y*v2[1]) for (x,y) in corners]
    pyplot.plot([x for (x,y) in corners],[y for (x,y) in corners],'b')

pyplot.show()