DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: ZMskyuza
今日帖子: 29
在线用户: 14
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 johnsons (john) ★☆☆☆☆ -
普通会员
2003/4/22 10:16:35
标题:
随机数的问题 浏览:3934
加入我的收藏
楼主: 如何同时产生4个不重复的随机数(使用random函数)
----------------------------------------------
能够想到,就一定会实现!
作者:
男 wxsxxj (毛毛) ★☆☆☆☆ -
普通会员
2003/4/22 10:32:23
1楼: var
  Rads:array[0..3] of real;//四个随机数
  k:integer;
begin
  Randomize;
  for k:=0 to 3 do 
    Rads[k]:=Random;
end;
----------------------------------------------
-
作者:
男 johnsons (john) ★☆☆☆☆ -
普通会员
2003/4/22 12:25:48
2楼: 毛毛:
你说的方法仍然会产生重复的数字
----------------------------------------------
能够想到,就一定会实现!
作者:
男 luotuo (骆驼) ★☆☆☆☆ -
盒子活跃会员
2003/4/22 19:53:36
3楼: 在范围限制吗?
我做过:在一定范围内产生不同的随机数。方法虽笨,可很实用。
----------------------------------------------
骆驼
作者:
男 johnsons (john) ★☆☆☆☆ -
普通会员
2003/4/22 21:19:57
4楼: 骆驼:
能否把你的代码发给我,谢谢!
gons@163.com
----------------------------------------------
能够想到,就一定会实现!
作者:
男 thunderbird (东方火鸟) ★☆☆☆☆ -
盒子活跃会员
2003/4/23 1:28:31
5楼: 文字

   设一个数组,如a[0]=0..a[100】=100,j;=0;随机产生下标值NUM,
     NUM:=ROMDOM(100-j);
     然后将a[i]与a[100-j]交换.
     j:=j+1; 重复以上过程。顺便说一句,
     这网站有点华而不实,建议访问www.delphiboy.com
    

----------------------------------------------
delphi,我心中的女神
作者:
男 luotuo (骆驼) ★☆☆☆☆ -
盒子活跃会员
2003/4/23 12:30:44
6楼: procedure TForm1.Button1Click(Sender: TObject);
Var
  i,j,k,m: byte;
  n: shortint;
  arr: array[0..30] of byte;
begin

   Randomize;

   m := 31;               //这是范围,产生的是 0-30 以内的随机数

   for i := 0 to 30 do arr[i] := 0;

   for i := t to 3 do    //产生三个不同的随机数
   begin
      k := Random(m);
      j := 0;
      n := -1;
      while j <= k do
      begin
            inc(n);
            if arr[n] <= 0 then inc(j);
      end;
      arr[n] := 1;
      dec(m);
   end;

   for i := 0 to 30 do
//       if arr[i] > 0 then 记下 i;

end;

----------------------------------------------
骆驼
作者:
女 lotus88 (lotus88) ★☆☆☆☆ -
普通会员
2003/4/23 15:48:50
7楼: 对6楼说的不是很明白
----------------------------------------------
-
作者:
男 luotuo (骆驼) ★☆☆☆☆ -
盒子活跃会员
2003/4/23 20:56:46
8楼: 我用 Delphi 5 写了一个小游戏:七彩连珠

游戏规则是:每次在 9X9 的棋盘上产生三个随机彩球(共七彩),通过鼠标点击彩球后再点击空位,可移动彩球(需有连通的路径--当然是最短路径),若 5 个以上同色彩球连成一线(横、竖、斜向均可),则它们消失并加分。这个游戏有不少人写过,我写它只是为了学习 Delphi 编程,作为入门的乐趣。

游戏中,对于每次产生的三个随机彩球,还需产生相应的随机球位,当然,三球的位置不能相同,我就采用了上面的方法(见6楼),(产生球位的)思路是:

1、数出棋盘中的空位数;
2、若空位数 > 0,则产生一个在 0-(空位数-1) 之间的随机数 k;
3、先设置一个变量 j,用循环方法,在棋盘内点数(变量 n)。每点数一格,n 增 1,而点数到空位时,j 增 1,当然,点数到 j = k 为止;(这一步是关键)
4、在棋盘的 n 位置放上标记,表示这里已安排了彩球,以便为下一步数空位时,空位数比本次少 1;
5、回到 步骤1 ;(需做三次嘛)
6、清除在 步骤4 中做的标记。

注:此算法没有无用功!

有要游戏或源码的朋友,可与我联系,不过源码得收一点点“银子”啰!

----------------------------------------------
骆驼
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS