请问一下,谁知道SQL SERVER2000里面的生成随机数的rand(seed) 里面的那个“seed”有什么功能啊,我总感觉加不加它,都 一样啊!

解决方案 »

  1.   

    seed是给出种子值或起始值的整型表达式(tinyint、smallint 或 int)。
    ----------select stuff(rand(),1,2,'')--返回随机整数select 1+cast(rand()*10 as int)--返回1-10的随机整数
      

  2.   

    加上一个定值seed,可以使每次产生的随机值一样,调试时使用的.一时也说不怎么清楚.
      

  3.   

    seed 是种子,也就是起始值,给与不给得到的值是不同的,关键看LZ需要取怎样的随机值了select rand(),rand(1),rand(3),rand(5)
      

  4.   

    联机丛书中的片段:在单个查询中反复调用 RAND() 将产生相同的值。示例
    下例产生 4 个通过 RAND 函数产生的不同的随机值。DECLARE @counter smallint
    SET @counter = 1
    WHILE @counter < 5
       BEGIN
          SELECT RAND(@counter) Random_Number
          SET NOCOUNT ON
          SET @counter = @counter + 1
          SET NOCOUNT OFF
       END
    GO
      

  5.   

    使用 RAND
    RAND 函数计算 0 到 1 之间的随机浮点数,而且可选择以 tinyint、int 或 smallint 值作为要计算的随机数的起始点。下面的示例计算两个随机数。第一个 RAND() 函数让 Microsoft® SQL Server™ 选取种子值,第二个 RAND() 函数使用值 3 作为起始位置。SELECT RAND(), RAND(3)RAND 函数是伪随机的数字生成器,它用与 C 运行时库 rand 函数类似的方法进行操作。如果没有提供种子值,系统将生成它自己的不定种子值。如果用种子值调用 RAND,则必须使用不定的种子值来生成随机数。如果用同一种子值多次调用 RAND,它将返回相同的生成值。下面的脚本中,对 RAND 的调用都返回相同的值,这是因为它们都使用了相同的种子值:SELECT RAND(159784)
    SELECT RAND(159784)
    SELECT RAND(159784)通常用 RAND 生成随机数的方法是,用相对不定的某个值作为种子值,例如累加 GETDATE 的几个部分:SELECT RAND( (DATEPART(mm, GETDATE()) * 100000 )
               + (DATEPART(ss, GETDATE()) * 1000 )
               + DATEPART(ms, GETDATE()) )使用基于 GETDATE 的算法生成种子值时,如果在算法中所用的最小 datepart 的时间间隔内多次调用 RAND,RAND 仍会生成重复值。如果对 RAND 的调用包括在单个批处理中,尤其可能出现这种情况。在单个批处理中对 RAND 的多次调用可在同一毫秒(DATEPART 的最小增量)内执行。这种情况下,请用基于除时间之外的值以生成种子值。