请高手指点取得一个范围内的随机书

smdy 2006-11-02 10:22:54
我写的循环 但需要得到符合要求的随机数 高手看看怎么补
declare @inti int,
@namelength int ,
@strNew char (100),
@strA char (40)
select @inti = 0,
@strA = '0123456789abcdefghigklmnopqrstuvwxyz',
@namelength = rand ()-- 需要一个1--100的随机数 做为name的长度
while (@inti < @namelength)
begin
set @strNew ='"+ @strNew + substring(@strA, rand (),1)+ "' -- 在侯选的36个字符中随机截取一个字符,需要<=36的随机数
set @inti =@inti +1
end
还望高手指教啊
...全文
132 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
smdy 2006-11-02
  • 打赏
  • 举报
回复
我随机了一把 发现select cast(rand()*36 as int)的方法是对的 但应该乘以37 要不永远也得不到36的 rand是返回0--1之间的
@namelength = replace(ceiling(rand()*100),'.0','')是对的 不用乘以101
谢谢各位的热心了
chenjunjarysky 2006-11-02
  • 打赏
  • 举报
回复
@namelength = rand ()-- 需要一个1--100的随机数 做为name的长度
---------------------------------------------------------------
@namelength = replace(ceiling(rand()*100),'.0','')


smdy 2006-11-02
  • 打赏
  • 举报
回复
先谢谢大家的热情相助啊 帮助我看过 但没看懂 是不是说要是求36内的随机数 括号里就写36?
但这种方法在一个较短内容易产生一样的数 特别是在循环中
seed

是给出种子值或起始值的整型表达式(tinyint、smallint 或 int)。
marco08 2006-11-02
  • 打赏
  • 举报
回复
select cast(rand()*36 as int)
dulei115 2006-11-02
  • 打赏
  • 举报
回复
declare @inti int,
@namelength int ,
@strNew char (100),
@strA char (40)
select @inti = 0,
@strA = '0123456789abcdefghigklmnopqrstuvwxyz',
@namelength = ceiling(rand(-1) * 100)-- 需要一个1--100的随机数 做为name的长度
while (@inti < @namelength)
begin
set @strNew ='"+ @strNew + substring(@strA, ceiling(rand(@inti) * 36),1)+ "' -- 在侯选的36个字符中随机截取一个字符,需要<=36的随机数
set @inti =@inti +1
end



----------------------------------------------------------------------
RAND
返回 0 到1 之间的随机float 值。

语法
RAND ( [ seed ] )

参数
seed

是给出种子值或起始值的整型表达式(tinyint、smallint 或 int)。

返回类型
float

注释
在单个查询中反复调用 RAND() 将产生相同的值。 ---------------注意这个
smdy 2006-11-02
  • 打赏
  • 举报
回复
我之前试过 用rand函数在一定时间内返回的随机数都一样 比如在一秒内得到的数都一样 你这个方法以前试过没?
子陌红尘 2006-11-02
  • 打赏
  • 举报
回复
select cast(rand()*36 as int)

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧