1. Си / Говнокод #17685

    +137

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    #include <time.h>
    
    
    int rrand(int start, int end)
    {
    	int range=end-start+1;
    	int speed=1;
    	int base=0;
    	int rez=start;
    	if(range>200) speed=range/100;
    	while(range>=0)
    	{
    		srand(clock());
    		if(rand()%2) base=base+speed+1;
    		else base--;
    		rez=rez+base;
    		rez=(rez < start)? end-rez : rez;
    		rez=(rez > end)? (rez%end)+start : rez;
    		range=range-speed;
    	}
    	return rez;
    }

    случайные числа в определенном диапазоне...

    Запостил: pl7ofit, 24 Февраля 2015

    Комментарии (12) RSS

    • Anyone who attempts to generate random numbers by deterministic means is, of course, living in a state of sin.
      Ответить
    • > srand(clock());
      Люди, ну зачем, зачем вы вызываете srand(clock()) на каждый чих? Эта срань же будет выдавать одно и то же значение, если вызвать её несколько раз в секунду...
      Ответить
      • Ты это кому?
        Ответить
        • Неопределённому кругу лиц, которые любят посрандить.
          Ответить
      • А еще в потоках тоже самое.
        Ответить
        • С потоками там отдельная засада... У вижуалки вроде в тредлокале seed лежит, а вот у гццшной либы там походу мутекс, поэтому при многопоточном доступе рандом становится в сотни раз медленней...
          Ответить
      • > то же значение, если вызвать её несколько раз в секунду...
        можно использовать как детектор попаданию в секунду
        Ответить
        • Вот это поворот!

          startSecondValue = srand(clock());
          DoSmth();
          if (startSecondValue == srand(clock())){ // hmmm... too easy
              DoSmthElseCouseIDONTKNOW();
          }
          Ответить
      • ага, я понял о чем ты, я то думал что сранд что-то вроде обновления rand(), теперь ясно что достаточно вызвать её один раз.
        Ответить
    • range=range-speed;

      а
      range-=speed;

      уже запретили?
      Ответить
      • Соответствующий законопроект уже вынесен на рассмотрение крестоблядского комитета по принятию решений про true'шность/не true'шность.
        Ответить
        • Был в детстве знакомый, с фамилией Трушкин, только сейчас осознал всю глубину смысла.
          Ответить

    Добавить комментарий