我需要从一个升序数组中选出一个元素。越小的元素被认为是更好的选择。因此,如果我从数组的开头选择一个元素,它被认为是更好的选择。但与此同时,我不希望选择是确定性的,而且总是相同的元素。因此,我正在寻找一个随机数生成器,它可以在范围[0,n]内产生数字,但是数字越小,它被产生的几率就越大。
我想到了以下方法:
我想到了以下方法:
num = n;
while(/*the more iteration the more chance for smaller numbers*/)
num = rand()%num;
我想知道是否有更好的解决方案。
我查看了一些类似的问题,但它们通常涉及随机数生成的细节。我正在寻找一个针对这种特定类型的随机数生成的解决方案,无论是算法还是提供它的库。