【问题标题】:Pseudo Random Weighted Numbers [closed]伪随机加权数
【发布时间】:2012-03-01 15:34:09
【问题描述】:

如果在 t 持续时间后未选择,我如何以 i 间隔生成 n 个随机整数,并在数字上放置一个偏差时间?

【问题讨论】:

  • 数字是指整数吗?是否存在有限范围的可能值?
  • 您需要记录每个生成的数字
  • 我不是数学系的学生,什么是对数字的偏见?能举个例子吗?
  • 我看到你还没有找到解决问题的办法...stackoverflow.com/questions/9518450/…
  • 好吧,向我们描述一下你在现实生活中会如何做。例如:假设你有十种不同颜色的弹珠。你把一百个放在一个大罐子里,然后摇动罐子。现在你开始随机拉出弹珠。每次拔出蓝色弹珠,下一次得到蓝色弹珠的几率就会降低。被拉得最多的颜色是最不可能被选择的颜色,而被拉得最少的颜色是最有可能被选择的颜色。有无数个进程与你难以置信的模糊描述相匹配,所以我们在这里没有什么可做的。

标签: c# algorithm math statistics


【解决方案1】:

此代码无法编译,但您可以了解我现有的算法的要点。它可能不是特别有效,但它可以完成工作,您必须根据自己的需要对其进行调整。即变量ntimer(创建定时器)、timerTicks和方法ChooseRandomNumber

int maxNumber = n;
timer timer;
Dictionary<int, int> numbers
int timerTicks;

// Set up numbers with 0 base rating
SetUpDetails()
{
  timer.interval = i
  for (int i = 0; i < maxNumber; i++)
    numbers.Add(i, 0);
}

timer.Tick
{
  // List with numbers
  List<int> numbersToChooseFrom;
  foreach (KeyValuePair number in numbers)
  {
    // Must be added at least once
    numbersToChooseFrom.Add(number.Key)
    if (number.Value > timerTicks)
      for (int i = 0; i < (number.Value/timerTicks); i++
        // i.e. if number hasnt been chosen for 
        // timerTicks iterations give it more weight
        numbersToChooseFrom.Add(number.Key) 

    // Some numbers occur more than once and thus have greater chance
    int choice = ChooseRandomNumber(between 0 and numbersToChooseFrom.Length)
    int RandomNumber = numbersToChooseFrom.ElementAt(choice)
    return RandomNumber;
  }
}

【讨论】:

    猜你喜欢
    • 2010-12-18
    • 2018-03-15
    • 1970-01-01
    • 2015-08-07
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多