좌측 세로 1~10 까지 , 가로 0~0.9 까지
a=Int(N * Rnd) + 1
N=10
엑셀 VB 스크립트에서 랜덤 수를 구할 때
저 식을 많이 알려주시더군요
사용하다가 비슷한 숫자가 자주 나오길래 궁금해서 VB 도움말을 찾아봤습니다.
https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualbasic.vbmath.rnd?view=net-5.0
The Rnd
function returns a value less than 1, but greater than or equal to zero.
제대로 이해를 했는지 모르겠습니다
remark에 나온 문구대로 엑셀로 어떤 숫자가 나올 수 있는지 간략하게 따져보니
확률상으로 보면 10이 나올 경우가 제일 적은 것처럼 나옵니다.
제가 잘못 이해를 한 것인가요?
아니면 확률적으로 균등하게 나올 수 있는 식이 따로 있을까요?
꿈만 꾸는 공상가
Int(2 + Rnd * (30 - 2 + 1))
https://www.automateexcel.com/vba/random-number/
ÀÌ·±½ÄÀ¸·Î Ç϶ó°í ³ª¿ÍÀִµ¥¿ä .
Àú ½ÄÀº Áö½ÄÀÎ ÅëÇؼ ¹ÞÀº °Ì´Ï´Ù
Àú·± ½ÄÀÌ ¸¹ÀÌ ³ª¿À´õ¶ó±¸¿ä
¾Ë·ÁÁֽŠ¸µÅ© ÂüÁ¶ÇÏ°Ú½À´Ï´Ù
ÀÛÀº ¹üÀ§ÀÇ ÀÓÀÇÀÇ ¼ö¸¦ »ý¼ºÇϸé ÇÊ¿¬ÀûÀ¸·Î °°Àº ¼ö°¡ ³ª¿À´Â °Í °°Àº ´À³¦ÀÌ µé ¼ö ÀÖ½À´Ï´Ù.
Å« ¹üÀ§ÀÇ ÀÓÀÇÀÇ ¼ö¸¦ ¸¹ÀÌ »ý¼ºÇؼ, ÆÐÅÏÀ» º¸¸é ±ÕµîÇÑ È®·ü·Î ³¼ö¸¦ »ý¼ºÇÏ´ÂÁö ¾Ë ¼ö ÀÖ°Ú½À´Ï´Ù.
¾Æ´Ï¸é, ·£´ý ½Ãµå¸¦ °è¼Ó ÃʱâÈ Çؼ »ç¿ëÇØ º¸½Ã´Â °ÍÀº ¾î¶³±î¿ä?
°è¼Ó µ¿ÀÏÇÑ ¼ö°¡ ±¸ÇØÁý´Ï´Ù ¤»
±×·¡¼ Rnd¿¡ Àǹ®ÀÌ, Àú ½Ä¿¡ Àǹ®ÀÌ µé¾ú½À´Ï´Ù
ÃÊÂ¥¶ó ±èÁ¦¿¬´ÔÀÌ ¾Ë·ÁÁֽŠ¸µÅ©¿¡¼ µµ¿òÀ» ¹Þ¾Æº¸·Á±¸¿ä
10*Rnd´Â 0¿¡¼ 9.9999¿¡ °í¸£°Ô ºÐÆ÷µÇ°í..
Int·Î Á¤¼ö¸¸ ¶¼¿À¸é 0 ~9
1À» ´õÇؼ 1~10·Î ºÐÆ÷µË´Ï´Ù
Áï RndÀÇ ½Å·Úµµ¿Í °°´Ù°í »ý°¢µÇ³×¿ä
n°³°¡ µ¿ÀÏÇÑ ·£´ý °ªÀ» ±¸ÇÏ´Â ½ÄÀ» ¸¸µé¾î¼
¿¢¼¿¿¡¼ µ¹·ÁºÃ´Âµ¥ nÀÌ Áõ°¡ÇÒ¼ö·Ï ³ª¿À´Â °ªÀÌ
°íÁ¤µÇ¾î ³ª¿É´Ï´Ù
a01 integer
a02 integer
.
.
.
a09 integer
b01 integer
.
.
.
b03 integer
c01 integer
do
do
a01=(NxRnd)+1
.
.
.
a03=(NxRnd)+1
loop until a01 = a02 and a01= a03
b01 = a01
.
.
.
do
a07=(NxRnd)+1
.
.
.
a09=(NxRnd)+1
loop until a07=a08 and a07= a09
b03=a07
loop until b01 =b02 and b01 =b03
c03=b01
ÃÊÂ¥¶ó ´ëÃæ ÀÌ·± ½ÄÀ¸·Î do loop untilÀ»
Áßø½ÃÄѼ N°³°¡ µ¿ÀÏÇÏ°Ô ³ª¿Ã ¼ö ÀÖ´Â ·£´ý °ªÀ»
±¸Çغ¸·Á°í µ¹·È½À´Ï´Ù
(µ¿ÀÏÇÑ °ª 4°³ ÀÌ»ó ºñ±³ÇÒ °æ¿ì ¿¢¼¿ÀÌ ¼ö½Ä ¿¬»êÀ¸·Î
ÀÀ´ä¾øÀ½À¸·Î ³Ñ¾î°¡¼ ³ª¿ÀÁö ¾Ê±â¿¡
3°³¾¿ ²÷¾î¼ µ¹¸®´Â °Ô ÃÖ¼±À̾ú½À´Ï´Ù)
do loop Áßø ½ÄÀÌ À߸øµÈ °ÍÀÎÁö ¸ð¸£°ÚÁö¸¸
·£´ýÀ¸·Î »ý¼ºÇÑ °ªÀε¥
ÃÖÁ¾ c01ÀÇ °ªÀÌ ·£´ýÇÏ°Ô ³ª¿À´Â °ÍÀÌ ¾Æ´Ï¶ó
ÀÏÁ¤ÇÑ ¼ýÀڵ鸸 ³ª¿É´Ï´Ù
ÀÌ°É ¿©·¯¹ø Áßø½ÃÅ°¸é µ¿ÀÏÇÑ ¼ýÀÚ 1°³¸¸ °è¼Ó ³ª¿É´Ï´Ù
¹¹°¡ ¹®Á©±î¿ä?
cpu°¡ ¹®Á¦ÀΰÇÁö...¼ö½ÄÀÌ ¹®Á¦ÀΰÇÁö...
Rnd ½Å·Úµµ°¡ ¹®Á¦ÀΰÇÁö...
ÃÊÂ¥¶ó ¸ð¸£°Ú½À´Ï´Ù ¤»
loop until a01 = a02 and a01= a03
ÀÌ ÄÚµå´Â 3°³°¡ ¿¬¼ÓÀ¸·Î °°Àº°Ô ³ª¿Ã¶§±îÁö ¹Ýº¹Çϴ°ɷΠº¸ÀÔ´Ï´Ù. ÀǵµÇÏ½Å°Ô ¸Â³ª¿ä?
Rnd°á°ú°¡ ¿¬´Þ¾Æ °°Àº °ªÀ» °¡Áö´Â°Í°ú °í¸£°Ô ÆÛÁö´Â°ÍÀº º°°³ À̾߱â¶ó »ý°¢ÇÕ´Ï´Ù
¿¢¼¿ vba ÄÚµå·Î rnd °ËÁõÇÏ´Â Äڵ带 Â¥ºÃ½À´Ï´Ù
Rnd¸¦ Àû´çÈ÷ ¸¹ÀÌ ¼öÇàÇÏ°í °á°ú¸¦ Ä«¿îÆÃÇÏ´Â ÄÚµåÀÔ´Ï´Ù
Sub test()
Dim a(1 to 10)
Dim i,j
For i = 0 to 1000000
j = Int(Rnd * 10) + 1
a(i) = a(i) + 1
Next i
For i = 1 to 10
Cells(i,1) = a(i)
Next i
End sub
¿¹·Î
1~10±îÁö ·£´ýÇÑ ¼ýÀÚ°¡ ³ª¿À´Â
10°³ÀÇ Åë¿¡¼
µ¿ÀÏÇÑ ¼ýÀÚ°¡ 10°³ÀÇ Åë¿¡¼ ³ª¿Ã ¶§±îÁö °è¼Ó µ¹¸®°í
±× µ¿ÀÏÇÑ ¼ýÀÚ°¡ ¹«¾ùÀΰ¡¸¦ ±¸ÇÏ´Â °ÍÀÔ´Ï´Ù.
°°Àº °ªÀÌ ³ª¿À´Ï ´Ù¸¥ ¹æ¹ýÀ» ã¾ÆºÁ¾ß°Ú½À´Ï´Ù
VBÀÇ ÄÚµù ¹æ¹ýÀº ¸ð¸£Áö¸¸,
1~10»çÀÌÀÇ ÀÓÀÇÀÇ ¼ö¸¦ 10°³ »ý¼ºÇÑ ´ÙÀ½,
1¹ø°¿Í 2¹ø°°¡ µ¿ÀÏÇÏ°í, 1¹ø°¿Í 3¹ø°°¡ µ¿ÀÏÇÏ°í,,, 1¹ø°¿Í 10¹ø¤Š°¡ µ¿ÀÏÇÑ°¡¸¦ ¹Ýº¹ÀûÀ¸·Î ÆÇ´ÜÇÏ´Â ½ÄÀ¸·Î ÄÚµùÇÏ´Â°Ô ÆíÇÏÁö ¾ÊÀ»±î »ý°¢µË´Ï´Ù.
Åë»óÀûÀ¸·Î ÄÄÇ»ÅÍÀÇ ³¼ö´Â ÃæºÐÈ÷ ³¼ö¶ó ÇÒ ¼ö ÀÖ´Â ÀÇ»ç ³¼ö·Î ¾Ë°í ÀÖ½À´Ï´Ù.
VB ½ºÅ©¸³Æ®¸¦ µ¿½Ã¿¡ ¿©·¯°³ ½ÇÇàÇÒ ¼ö ÀÖ´Ù¸é, ÄÚ¾î ¼ýÀÚ¸¸Å µ¿½Ã¿¡ µ¹·Á¼ È®ÀÎÇØ º¸°Ú½À´Ï´Ù.
¿©·¯¹ø ³Ö¾îµµ µÇ´ÂÁö ¸ð¸£°ÚÁö¸¸
È®½ÇÈ÷ µ¿ÀÏÇÑ °ªÀº ¾È³ª¿À³×¿ä