LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 981|回复: 8

一个简单的流控制(IF)问题,

[复制链接]
发表于 2005-2-8 23:05:57 | 显示全部楼层 |阅读模式
想用RAMDOM生成3个随机数。
用IF判断,是否有相同,没有就下一步,有相同就再RAMDOM一次,直到没有相同为止~
麻烦麻烦~~
发表于 2005-2-10 15:10:30 | 显示全部楼层
3次? 相同的概率很小很小
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-10 22:48:44 | 显示全部楼层
Post by 寂寞烈火
3次? 相同的概率很小很小

就是常常有重复呀~~
麻烦写一个例子,看看啦`~
回复 支持 反对

使用道具 举报

发表于 2005-2-11 11:42:39 | 显示全部楼层
没有shell环境,可能有语法错误:
typedef -i i1=0
typedef -i i2=0
typedef -i i3=0
while true
do
  i1=$RANDOM;i3=$RANDOM;i3=$RANDOM
if [ $i1 -ne $i2 -a $i1 -ne $i3 -a $i2 -ne $i3 ]; then
  break
fi
done
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-11 14:11:52 | 显示全部楼层
你的太难了,,,看不明,我自己写了一个,麻烦,帮我优化优化,ps 用数组可以吗?可以的话,帮助写一个看看可以吗?


  1. while true
  2. do
  3. a=$((RANDOM % 10))
  4. b=$((RANDOM % 10))
  5. c=$((RANDOM % 10))
  6. if [ $a != $b ] && [ $a != $c ] && [ $b != $c ]
  7. then
  8. echo 'config ok'
  9. echo $a' '$b' ' $c' '
  10. break
  11. fi
  12. done
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-2-15 12:44:21 | 显示全部楼层
每次都要随机三个出来好象效率有点低
不如1个1个随机出来

下面是我改的代码,有点长,但是比较好理解

#!/bin/bash

a=$((RANDOM % 10))
while true
do
   b=$((RANDOM % 10))
   if [ $a != $b ]  
    then
    break
   fi
done

while true
do
   c=$((RANDOM % 10))
   if ([ $a != $c ] && [ $b != $c ])
     then
     break
   fi
done

echo 'config ok'
echo $a' '$b' ' $c' '
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-15 14:53:25 | 显示全部楼层

......

Post by davidliang
每次都要随机三个出来好象效率有点低
不如1个1个随机出来

这样你也...............
回复 支持 反对

使用道具 举报

发表于 2005-2-18 16:50:29 | 显示全部楼层
楼主的意思是否是要在三个数中生成随机的两个数进行比较?
回复 支持 反对

使用道具 举报

发表于 2005-2-20 09:03:12 | 显示全部楼层
Post by davidliang
每次都要随机三个出来好象效率有点低
不如1个1个随机出来

下面是我改的代码,有点长,但是比较好理解

#!/bin/bash

a=$((RANDOM % 10))
while true
do
   b=$((RANDOM % 10))
   if [ $a != $b ]  
    then
    break
   fi
done

while true
do
   c=$((RANDOM % 10))
   if ([ $a != $c ] && [ $b != $c ])
     then
     break
   fi
done

echo 'config ok'
echo $a' '$b' ' $c' '


这个方法也可以,8过好象没有前面的随机数的随机性大
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表