- 1
- 2
- 3
- 4
- 5
__int64 timestamp;
// Get nanoseconds since 1601
timestamp = rand() + (((__int64)rand()) << 32);
timestamp /= 100;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+154
__int64 timestamp;
// Get nanoseconds since 1601
timestamp = rand() + (((__int64)rand()) << 32);
timestamp /= 100;
очень вольная работа со временем...
Lure Of Chaos 16.03.2011 21:47 # −1
чече?
absolut 16.03.2011 22:12 # +5
Lure Of Chaos 16.03.2011 22:16 # +3
Мистер Хэнки 16.03.2011 22:33 # 0
Анонимус 17.03.2011 00:08 # 0
Lure Of Chaos 17.03.2011 00:29 # +1
bugmenot 16.03.2011 23:07 # 0
absolut 16.03.2011 23:48 # 0
Анонимус 17.03.2011 00:09 # +2
позор всем нам!!!
Пьер Ферма же родился!
Lure Of Chaos 17.03.2011 00:29 # 0
nil 17.03.2011 02:00 # 0
istem 17.03.2011 02:44 # 0
kubrinsky 17.03.2011 10:04 # 0
TheCalligrapher 17.03.2011 10:14 # 0
Я, например, если надо было бы к чему-то придраться, придрался бы к сдвигу на 32: в общем случае нет гарантии, что `rand()` генерирует 32 бита. Он может генерировать и намного меньше, т.е. танцевать надо было бы от `RAND_MAX`. А в остальном способ комбинации нескольких вызовов `rand()` - вполне приемлем.
А то, что генерируется якобы именно временной интервал... так на это приведенный код никак не завязан. Хоть временной интервал, хоть число цыплят по осени - какая в данном случае разница?
absolut 17.03.2011 11:21 # 0
И формируется итог из старших и младших 4х байтовых последовательностей.
gegMOPO4 17.03.2011 15:04 # 0
absolut 17.03.2011 15:17 # 0
В данном случае, я хотел сказать, что не важно сколько бит генерит rand(), ну будут кое-где нулики, ничего страшного в этом нет. А если уж хочется все биты в int64 сделать псевдослучайными, тогда конечно надо учесть разрядность rand().
bugmenot 17.03.2011 15:28 # +1
TarasB 17.03.2011 17:46 # 0
TheCalligrapher 17.03.2011 22:08 # 0
Относительная говнокодовость тут в использовании знакового типа и в, еще раз, завязке на 32 бита.