我目前正试图以CiLEO为参考实现美国航天局的分裂模型。我对如何实现作者所定义的特征长度感到非常困惑。
"对于CiELO中的实现来说,特征长度被分为100个仓,按对数比例均等地分布在1毫米和10厘米之间:计算每个仓的碎片数量,一旦每个碎片被分配到一个仓,其特征长度就会被定义,使用内置的matlab函数rand来提取仓内Lc的随机值。"
我的问题是最后一个组件,在每个bin内提取一个随机值来定义长度。我在网上找不到任何关于如何在给定bin边缘的情况下,在每个bin内提取一个属于bin的值。
为了便于演示,我目前已经将碎片数量函数定义为。
def number_of_fragments(length):
return 0.1*length**-1.71
# Generating 100 bins evenly spaced on a log scale between 1mm (0.001 m) and 10cm (0.1 m)
bins = np.geomspace(0.001, 0.1, 100)
# Finding the corresponding number of fragments for each bin
fragments = [number_of_fragments(b) for b in bins]
# Need to pick a random value that falls in the range of each bin
Lc = ???
如果有任何帮助,我将不胜感激!
像这样。
from random import uniform
bins = np.geomspace(0.001, 0.1, 100)
rand_floats = [uniform(bins[i], bins[i+1]) for i in range(len(bins)-1)]
通过索引迭代列表项,动态设置随机数生成范围
编辑:注意,这是假设均匀分布的,请看文档。https:/numpy.orgdocstablereferencerandomgeneratednumpy.random.uniform.html。