2
나는 임의의 6 개의 값을 찾을 수있는 100k 개의 행을 데이터베이스에 반환합니다. 문제는 로또에서 여러 개의 동일한 값을 가질 수 없다는 것입니다. 나는 .. 일부 값은 예를 들어, 동일한을 게재하는 것으로 나타났습니다 랜덤 숫자가 SQL을 사용하여 동일하지 않다는 것을 확인
21-21-34-3-14-46
21
및
21
가 로또 티켓의 유효 숫자가되지 않습니다 분명있다. 그래서 내 질문에 임의의 값을 생성 할 때 숫자가 같지 않은지 확인하려면 어떻게해야합니까?
SET NOCOUNT ON
DECLARE @intFlag INT
SET @intFlag = 1
WHILE (@intFlag <=500000)
BEGIN
--Do Stuff
DECLARE @Random1 INT, @Random2 INT, @Random3 INT, @Random4 INT, @Random5 INT, @Random6 INT, @Upper INT, @Lower INT
---- This will create a random number between 1 and 49
SET @Lower = 1 ---- The lowest random number
SET @Upper = 49 ---- The highest random number
SELECT @Random1 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random2 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random3 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random4 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random5 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random6 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
--SELECT @Random;
INSERT INTO CustomerSelections
([draw_date]
,[val1]
,[val2]
,[val3]
,[val4]
,[val5]
,[val6])
VALUES
(
'2013-07-05'
,@Random1
,@Random2
,@Random3
,@Random4
,@Random5
,@Random6
)
SET @intFlag = @intFlag + 1
END
GO
@Gordon : I없이 중복으로 임의의 숫자를 생각하면
안녕하세요 @ Gordon Linoff : 매우 좋지만별로 좋지 않습니다. 그것은 동일한 숫자가 여러 번 나오지는 않지만 임의성은 거기에 있지 않은 내 문제를 해결합니다. – PriceCheaperton
@PriceCheaperton. . . 나는 네가 무슨 뜻인지 정말로 모른다. 이 코드를 테스트 할 때마다 매번 매우 다른 조합이 생성됩니다. 무작위성은 newid()에 의한 order by에 의해 보장되어야한다. 다음은 동일한 논리 (http://www.sqlfiddle.com/#!3/d41d8/16696)를 가진 SQLFiddle입니다. 변수를 처리하기 위해 SQLFiddle을 얻는 방법을 찾지 못했기 때문에 모든 변수가 하드 코드되었습니다. –
@ GordonLinoff : 코드를 10,000 번 실행 한 다음 다른 질문에서 다른 숫자가 몇 번 왔는지 보여주는 다른 질문에서 실행 한 쿼리를 실행하면 나는 무슨 뜻인지 알게 될 것입니다. 더 자주 그리고 더 자주 올 수 있습니다. 주파수는 너무 딱 맞지 않습니다. 위의 질문에 업로드 된 스크린 샷을 참조하십시오. 감사합니다. – PriceCheaperton