- 1
- 2
- 3
- 4
- 5
private int GenerateRandom(int MaxValue)
{
var mas = Guid.NewGuid().ToByteArray();
return BitConverter.ToInt32(mas, 4) % MaxValue;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+113
private int GenerateRandom(int MaxValue)
{
var mas = Guid.NewGuid().ToByteArray();
return BitConverter.ToInt32(mas, 4) % MaxValue;
}
....
absolut 28.01.2013 16:25 # 0
p.s. случайно минусанул :(
3.14159265 28.01.2013 16:49 # +1
>4
Int32 и 4 - никаких ассоциаций?
Без описания ToInt32(byte[],int) - непонятно, но я бы лично вычислил хеш-код.
absolut 28.01.2013 16:52 # 0
http://bit.ly/VhfRr6
3.14159265 28.01.2013 17:04 # 0
Dummy00001 28.01.2013 20:13 # 0
absolut 28.01.2013 20:28 # +1
в вижуалке ничего подобного не замечено (tools-create guid)
movaxbx 28.01.2013 20:51 # +1
только старшая тетрада в девятом байте одинакова
9447ea2a-2cbf-4e89-80dd-96b345af2eb9
13c1430e-421c-482a-b515-a9d6abfb4d91
367bfed2-4325-434c-9ad2-cfef5e73e2ff
f07a0df9-b86e-4af9-9080-45804ed7c2ad
f16b4187-c1c8-48c6-8a8a-9fe825ad7867
a9a32db2-1c73-41a1-9232-8b93cc6ce76c
cdb5ca5b-3bad-4f2b-af1e-90b211abf016
b927e20a-fc9f-49a6-af00-9511f5554e98
ea56f721-be31-4cc3-a37b-f7f116b00a94
6247fe5a-0379-4694-88c1-c56c23bc2e38
e57089c6-3d1a-41cc-a2e0-6c66f3c3f02f
6cd51cab-de9e-4031-9752-791f6ca86bc9
5227821b-91f7-4f67-88eb-7289ec6767ed
2183a5ad-3e58-454f-8951-8e800d61512c
2f2cf309-6bc4-4fef-9095-423d4cd570a3
04827a62-06f2-4e52-813f-2ba64bf0da4b
bormand 29.01.2013 12:36 # +1
krypt 28.01.2013 17:12 # 0
--
Каждый раз, когда я вижу рядом "Random" и "% MaxValue" мне хочется сделать facepalm.
TarasB 28.01.2013 20:22 # 0
krypt 28.01.2013 20:45 # +1
3.14159265 28.01.2013 21:43 # +1
krypt 28.01.2013 21:55 # +1
TarasB 29.01.2013 17:14 # 0
krypt 29.01.2013 19:17 # +2
Мы хотим значения с 0 по 3, и делаем %4
В результате мы имеем такую таблицу:
0123456789
0123012301
Шанс получить 0 и 1 - 3/10
Шанс получить 2 и 3 - 2/10
Конечно, ранд_макс на несколько порядков выше, и эффект мал, но не всегда пренебрежимо мал.
Всё зависит от отношения rand_max/max
krypt 29.01.2013 19:25 # 0
TarasB 29.01.2013 20:38 # 0
А вообще сишный ранд говно потому, что деление с остатком на n - это тормоза.
В Паскале же сделано оптимальнее, ведь берётся seed*n/(2**32), что делается одним умножением и взятием edx.
guest 26.02.2013 02:12 # 0
krypt 29.01.2013 19:19 # +1
scriptin 29.01.2013 23:27 # 0
krypt 30.01.2013 00:09 # 0
krypt 30.01.2013 05:18 # 0
TarasB 30.01.2013 16:55 # 0
krypt 28.01.2013 20:46 # 0
absolut 28.01.2013 20:56 # 0
krypt 28.01.2013 21:01 # 0
Lure Of Chaos 29.01.2013 00:19 # 0
krypt 29.01.2013 04:03 # −1