想要取1~100的随机数,连续可能要取几百次。
SET r = RAND() * 99 + 1;
经常会有连续的重复数字出现,请问该怎么取得真正的随机数??
记得以前看过个帖子是利用微秒?请高人帮助啊

解决方案 »

  1.   

    RAND ( [ seed ] ) 参数
    seed是给出种子值或起始值的整型表达式(tinyint、smallint 或 int)。---
    你可以每次都初始话seed,自然我想就不会重复了
      

  2.   

    declare @i int
    set @i = 0
    while @i<100 
     begin
    print floor(rand(@i*cast(getdate() as int))*100)
      set @i=@i+1
     end 
    /*
    (所影响的行数为 7 行)94
    43
    16
    88
    60
    33
    5
    78
    50
    22
    95
    67
    39
    12
    84
    57
    29
    1
    74
    46
    18
    91
    63
    36
    8
    80
    53
    25
    97
    70
    42
    15
    87
    59
    32
    4
    77
    49
    21
    94
    66
    38
    11
    83
    56
    28
    0
    73
    45
    17
    90
    62
    35
    7
    79
    52
    24
    97
    69
    41
    14
    86
    58
    31
    3
    76
    48
    20
    93
    65
    37
    10
    82
    55
    27
    99
    72
    44
    16
    89
    61
    34
    6
    78
    51
    23
    96
    68
    40
    13
    85
    57
    30
    2
    75
    47
    19
    92
    64
    36
    */
      

  3.   

    利用微秒?
    select right(datepart(ms,getdate()),2)
    这样?
      

  4.   

    忘了加1
    select right(datepart(ms,getdate()),2)+1
      

  5.   

    hawk_js(鹰),直接RAND()出来经常会有连续4,5个相同的数,我想这就不能算真正的随机数了吧。aniude(重返荣耀) 谢谢,你的方法好象不错,我试下哦!
    Sunyo00() 你的也试下!THX!