임의의 단어 조합을 생성하는 기능

4532066

6,318 개의 임의 단어가 들어있는 MySQL 데이터베이스 테이블이 있습니다.

해당 테이블에서 선택을 수행하고 단어를 배열에 넣는 약간의 코드가 있습니다.

나는 임의의 단어 조합을 추출하는 함수를 작성했습니다. 예를 들어 8 자 길이입니다.

내가 가진 문제는 함수가 그렇게 무작위로 보이지 않는다는 것입니다. 표에 6,318 개의 단어가 있으므로 8 자 길이의 단어 조합이 수백 개라는 것을 알고 있지만 코드 출력이 동일한 조합을 반복하는 경우가 많습니다.

다음은 코드입니다.

<%

SQL1 = "SELECT fld_un FROM j_un2 ORDER BY rand()"

'##############################################################################

set p1RS = oConn.Execute(SQL1)
list1 = p1RS.GetRows
p1RS.Close

block1 = ""
For row = 0 to UBound(list1,2)
 block1 = block1 & list1(0,row) & ","
next
Erase list1

wordArray1 = split(block1, ",")

Function f1(str)
    found = "no"
    max=6138
    min = 1
    do while found <> "yes"
        Randomize
        rand1 = Int((max-min+1)*Rnd+min)
        rand2 = Int((max-min+1)*Rnd+min)
        word = wordArray1(rand1) & wordArray1(rand2)
        if len(word) = str + 1 then 
            found = "yes"
            f1 = word
        end if
    Loop
End Function

for i = 1 to 10
    bob = f1(8)
    response.write bob & "<br />"
next
%>

샘플 출력 :

싹 네일 
epeestove 
buggersix 
splatsane 
urbanbash 
pinevital 
shootnail 
epeestove 
buggersix 
splatsane

보시다시피 일부 조합은 반복됩니다. 예를 들어 위의 추출에서 다음 두 조합 만 고유합니다.

어반 
바시 파인 비탈

이렇게하면 (예 : 출력 20) :

for i = 1 to 20
    bob = f1(8)
    response.write bob & "<br />"
next

그러면 어떤 조합도 고유하지 않습니다.

raftsniff 
hitactive 
nineridge 
tartmagma 
turnbuyer 
klutzpity 
acceptlose 
bookspell 
herbshare 
raftsniff 
hitactive 
nineridge 
tartmagma 
turnbuyer 
klutzpity 
acceptlose 
bookspell 
herbshare 
raftsniff 
hitactive

나는 명백한 것을 놓치고 있는가-나는 그들이하는 것처럼 조합이 반복되는 이유를 알아낼 수 없다.

user692942

여기서 문제는 .NET 사용과 관련하여 인터넷의 다른 예에서 배운 오해 Randomize()입니다.

Randomize는 무엇을합니까?

Randomize()기본적으로 시스템 시간에서 가져온 시드 값을 생성하여 작동합니다 (계속 변경되므로 결과는 항상 무작위이어야합니다) . 이 시드는 Rnd()에서 임의 값을 생성하는 데 사용됩니다 .

그래서 무엇이 문제입니까?

Randomize()1 초에 여러 번 계산할 수있는 루프 안에가 배치 되면 사실상 동일한 값으로 다시 시드됩니다.

그리고 해결책은?

으로는 Randomize()의 초기 씨앗 제공 Rnd()한 후 실행 코드에서 여러 번 호출 할 이유가 없다 사용에 있습니다. Randomize()클래식 ASP 페이지 상단에서 함수를 한 번 호출하면 값을 시드 Rnd()한 다음 모든 코드 (루프 또는 기타)를 통해 사용할 수 있습니다 .

질문의 특정 문제를 해결하려면 Randomize()코드의 모든 루프를 완전히 제거하고 (가급적이면 페이지 상단 근처에) 배치 하여 임의 시드를 한 번 설정합니다.

질문의 예제를 사용하면 다음과 같이 보일 것입니다.

<%
'Call Randomize() once to set the seed for the page.
Randomize
SQL1 = "SELECT fld_un FROM j_un2 ORDER BY rand()"

'##############################################################################

set p1RS = oConn.Execute(SQL1)
list1 = p1RS.GetRows
p1RS.Close

block1 = ""
For row = 0 to UBound(list1,2)
 block1 = block1 & list1(0,row) & ","
next
Erase list1

wordArray1 = split(block1, ",")

'Removed Randomize() from the f1() function, Rnd() will now use the
'seeded value set at the beginning of the code.
Function f1(str)
    found = "no"
    max=6138
    min = 1
    do while found <> "yes"
        rand1 = Int((max-min+1)*Rnd+min)
        rand2 = Int((max-min+1)*Rnd+min)
        word = wordArray1(rand1) & wordArray1(rand2)
        if len(word) = str + 1 then 
            found = "yes"
            f1 = word
        end if
    Loop
End Function

for i = 1 to 10
    bob = f1(8)
    response.write bob & "<br />"
next
%>

유용한 링크

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

주어진 원에서 하나 이상의 임의의 점을 생성하는 기능

분류에서Dev

Android : 임의 단어 생성기

분류에서Dev

JavaScript는 임의의 CSS 색상을 생성하기 위해 반복 코드를 단축합니다.

분류에서Dev

단일 세트에서 특정 크기의 모든 조합을 생성하는 PHP 알고리즘

분류에서Dev

더하기 기호 또는 빼기 기호 (-또는 +)를 포함 할 수있는 임의의 문자열을 생성하려면 어떻게해야합니까?

분류에서Dev

파이썬을 사용하여 단어 목록에서 길이 2의 모든 단어 조합 찾기

분류에서Dev

어떻게 입력에서 임의의 값을 생성하기 위해?

분류에서Dev

단일 임의 출력을 생성하는 Excel 매크로

분류에서Dev

bash에서 가능한 모든 단어 조합을 생성하는 방법은 원래 순서로?

분류에서Dev

임의의 단어가 사용되는 경우 몇 개의 조합을 얻을 수 있습니까?

분류에서Dev

어떻게 개조의 기능을 일시 중단에 대한 전화 어댑터를 만드는 방법?

분류에서Dev

"TR"의 CSS 스타일에서 선택한 행을 강조 표시에서 단추 기능을 제외하려면 어떻게해야합니까?

분류에서Dev

주어진 숫자의 합을 이루고 일련의 일반 제약 조건을 준수하는 임의의 자연수 생성

분류에서Dev

주어진 숫자의 합을 이루고 일련의 일반 제약 조건을 준수하는 임의의 자연수 생성

분류에서Dev

Excel에서 두 기간 사이에 임의의 시간 슬롯을 생성하려면 어떻게합니까?

분류에서Dev

임의의 수의 정수 배열을 복제하는 기능

분류에서Dev

임의의 단어를 생성하는 방법

분류에서Dev

어떻게 임의의 숫자의 지정된 양을 생성하는?

분류에서Dev

단어 조합 생성기 수정

분류에서Dev

배열의 내용을 사용 가능한 변수에 할당하기 위해 사용자 지정 구조체를 어떻게 생성합니까?

분류에서Dev

임의 색상 생성기 (단어 한 단어가 아닌 전체 섹션)

분류에서Dev

하나의 버튼을 생성하고 두 가지 기능을 가지려면 어떻게해야합니까?

분류에서Dev

단어를 형성하기 위해 소리 또는 음절의 배열을 의미하는 단어?

분류에서Dev

pyparsing의 Group ()은 구문 분석되는 언어에 특정한 구조를 생성하기 위해 사후 처리 단계가 필요합니까?

분류에서Dev

루틴 / 기능을 호출 할 때 CALL이라는 단어는 무엇을 의미합니까?

분류에서Dev

두 개의 다른 데이터 프레임에서 일치하는 값을 기반으로 새 열을 생성하려면 어떻게해야합니까?

분류에서Dev

임의 모듈을 사용하는 다른 목록의 임의 단어

분류에서Dev

Python 조인 문자열을 사용하여 문자열의 모든 단어에 대한 조합 생성

분류에서Dev

커피 스크립트 기능을 정의하려고 할 때 "예약 된 단어 '기능'"이 표시됨

Related 관련 기사

  1. 1

    주어진 원에서 하나 이상의 임의의 점을 생성하는 기능

  2. 2

    Android : 임의 단어 생성기

  3. 3

    JavaScript는 임의의 CSS 색상을 생성하기 위해 반복 코드를 단축합니다.

  4. 4

    단일 세트에서 특정 크기의 모든 조합을 생성하는 PHP 알고리즘

  5. 5

    더하기 기호 또는 빼기 기호 (-또는 +)를 포함 할 수있는 임의의 문자열을 생성하려면 어떻게해야합니까?

  6. 6

    파이썬을 사용하여 단어 목록에서 길이 2의 모든 단어 조합 찾기

  7. 7

    어떻게 입력에서 임의의 값을 생성하기 위해?

  8. 8

    단일 임의 출력을 생성하는 Excel 매크로

  9. 9

    bash에서 가능한 모든 단어 조합을 생성하는 방법은 원래 순서로?

  10. 10

    임의의 단어가 사용되는 경우 몇 개의 조합을 얻을 수 있습니까?

  11. 11

    어떻게 개조의 기능을 일시 중단에 대한 전화 어댑터를 만드는 방법?

  12. 12

    "TR"의 CSS 스타일에서 선택한 행을 강조 표시에서 단추 기능을 제외하려면 어떻게해야합니까?

  13. 13

    주어진 숫자의 합을 이루고 일련의 일반 제약 조건을 준수하는 임의의 자연수 생성

  14. 14

    주어진 숫자의 합을 이루고 일련의 일반 제약 조건을 준수하는 임의의 자연수 생성

  15. 15

    Excel에서 두 기간 사이에 임의의 시간 슬롯을 생성하려면 어떻게합니까?

  16. 16

    임의의 수의 정수 배열을 복제하는 기능

  17. 17

    임의의 단어를 생성하는 방법

  18. 18

    어떻게 임의의 숫자의 지정된 양을 생성하는?

  19. 19

    단어 조합 생성기 수정

  20. 20

    배열의 내용을 사용 가능한 변수에 할당하기 위해 사용자 지정 구조체를 어떻게 생성합니까?

  21. 21

    임의 색상 생성기 (단어 한 단어가 아닌 전체 섹션)

  22. 22

    하나의 버튼을 생성하고 두 가지 기능을 가지려면 어떻게해야합니까?

  23. 23

    단어를 형성하기 위해 소리 또는 음절의 배열을 의미하는 단어?

  24. 24

    pyparsing의 Group ()은 구문 분석되는 언어에 특정한 구조를 생성하기 위해 사후 처리 단계가 필요합니까?

  25. 25

    루틴 / 기능을 호출 할 때 CALL이라는 단어는 무엇을 의미합니까?

  26. 26

    두 개의 다른 데이터 프레임에서 일치하는 값을 기반으로 새 열을 생성하려면 어떻게해야합니까?

  27. 27

    임의 모듈을 사용하는 다른 목록의 임의 단어

  28. 28

    Python 조인 문자열을 사용하여 문자열의 모든 단어에 대한 조합 생성

  29. 29

    커피 스크립트 기능을 정의하려고 할 때 "예약 된 단어 '기능'"이 표시됨

뜨겁다태그

보관