0xDEADBEEF

RSS odkazy

mince.d

9. 9. 2023 #kód
import std.algorithm;
import std.random;
import std.stdio;

void main() {
  auto c50 = [24953UL, 22959553UL, 11546663UL, 17796033UL, 10523453UL, 14705863UL, 5261953UL, 18023UL, 5217343UL, 18603UL, 17029003UL, 4021630UL, 17213200UL, 36722250UL, 9530800UL, 23000UL, 33000UL, 17000UL, 38555UL, 25000UL, 20261UL, 18500UL, 28936UL, 31500UL, 27600UL, 41500UL, 103093UL, 102957UL, 99996UL, 35001049UL];
  auto c20 = [24953UL, 1030603UL, 34673563UL, 9608013UL, 15620953UL, 13654813UL, 6313453UL, 8085033UL, 6275683UL, 1088353UL, 15467773UL, 21600UL, 14200UL, 14200UL, 19500UL, 23000UL, 2099000UL, 9869778UL, 8253507UL, 25000UL, 20999990UL, 27500UL, 15714646UL, 26276910UL, 15727600UL, 8092719UL, 101150UL, 101837UL, 100444UL, 54993446UL];
  auto c10 = [24953UL, 6274253UL, 21018563UL, 10494283UL, 18679253UL, 13666513UL, 12612203UL, 5267733UL, 7363633UL, 7878603UL, 29003UL, 21630UL, 16814200UL, 10514200UL, 10095300UL, 23000UL, 33000UL, 17000UL, 2259740UL, 18750000UL, 23646UL, 27500UL, 10062799UL, 31500UL, 27600UL, 49715UL, 20644143UL, 20682647UL, 20677724UL, 69997359UL];
  auto c5 = [10518863UL, 12571403UL, 12590763UL, 18903433UL, 12623603UL, 17648363UL, 18915403UL, 7267848UL, 1166718UL, 9468603UL, 29003UL, 21650UL, 14714200UL, 19914200UL, 11619500UL, 23000UL, 25033000UL, 17000UL, 38940UL, 25000UL, 21348485UL, 27500UL, 28931UL, 31500UL, 27600UL, 41500UL, 5053730UL, 20155218UL, 44875382UL, 70001000UL];
  auto c2 = [31532563UL, 22521403UL, 5783063UL, 42881333UL, 37537603UL, 16018463UL, 26262303UL, 10177533UL, 8416533UL, 15768603UL, 14820003UL, 11480640UL, 26057200UL, 25421200UL, 26269500UL, 30023000UL, 33000UL, 17000UL, 15662556UL, 20958000UL, 20944574UL, 26119500UL, 27500UL, 30778UL, 10458080UL, 15061745UL, 15181750UL, 30520405UL, 48670286UL, 80000900UL];
  auto c1 = [20973763UL, 19880303UL, 16810663UL, 42963233UL, 31192503UL, 20013363UL, 31514803UL, 18360133UL, 12124213UL, 19968603UL, 19979003UL, 22071650UL, 15007800UL, 38370600UL, 29619500UL, 14173000UL, 27100000UL, 17000UL, 20999940UL, 15915000UL, 26248156UL, 21813550UL, 9698500UL, 26914UL, 27600UL, 15057001UL, 35344913UL, 40668280UL, 52162680UL, 102429343UL];

  auto counts = c1;
  auto prefixSum = counts.dup;

  foreach (i; 1 .. counts.length) {
    prefixSum[i] += prefixSum[i - 1];
  }

  auto max = prefixSum[$ - 1];

  foreach (_; 0 .. 100) {
    auto x = new bool[counts.length];
    long tries = 0;

    while (true) {
      tries++;
      auto r = uniform(0UL, max);
      long y;
      foreach (yy, ps; prefixSum) {
        if (r < ps) { y = yy; break; }
      }
      if (!x[y]) {
        x[y] = true;
        if (x.all) break;
      }
    }
    writeln(double(tries));
  }

}
píše k47 (@kaja47, k47)