找回密码  加入

AUTOIT CN

搜索
查看: 4338|回复: 0

[效率算法] 又一个随机字母的问题 请大家帮忙

[复制链接]
发表于 2012-5-31 21:02:07 | 显示全部楼层 |阅读模式
a-z

如果按2个字母放一起 一共有多少组合???

怎么随机显示一个??
 楼主| 发表于 2012-5-31 21:03:13 | 显示全部楼层
dim $str=""
for $i = 1 to 2
    $str = $str & chr(random(65,90,1))
next
msgbox(0,0,$str)

类似这样的随机 只是随机一种

我想全部列出来
发表于 2012-5-31 21:43:44 | 显示全部楼层
本帖最后由 netegg 于 2012-5-31 21:44 编辑

for $i = 65 to 90
for $j = 65 to 90
if $i <> $j then consolewrite(chr($i) &chr($j) & @cr)、
next
next

ab和ba算不算一样的?
发表于 2012-5-31 22:01:55 | 显示全部楼层
本帖最后由 veket_linux 于 2012-5-31 22:05 编辑
#include <Array.au3>
Local $arr[1]=[0]
Local $array[26]
Local $i
Local $j
Local $count = 0
Local $str = ""
Local $allstr
For $i = 0 To UBound($array)-1
        $array[$i] = $i+Asc("A")
Next
For $i = 0 To UBound($array)-2
        For $j = $i+1 To UBound($array)-1
                $count += 1
                $str = Chr($array[$i])&Chr($array[$j])
                _ArrayAdd($arr, $str)
                $arr[0] +=1
                $allstr &= $str 
                If 0<>Mod($count, 20) Then
                        $allstr &= " , "
                Else
                        $allstr &= @CRLF
                EndIf
        Next
Next
MsgBox(0, "全部 " & $count, $allstr)
MsgBox(0, "随机显示一个", $arr[Random(1, $arr[0], 1)])


$str = ""
$allstr = ""
Local $newarr=$arr

For $i = 1 To $arr[0]
        Do
                $newarr[$i] = $arr[Random(1, $arr[0], 1)]
                For $j = 1 To $i-1
                        If $newarr[$j] = $newarr[$i] Then ExitLoop
                Next
        Until $j=$i
        $allstr &= $newarr[$i]
        If 0<>Mod($i, 20) Then
                $allstr &= " , "
        Else
                $allstr &= @CRLF
        EndIf
Next
MsgBox(0, "全部--随机 ", $allstr)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入

x
发表于 2012-5-31 23:10:56 | 显示全部楼层
那么多字幕啊
发表于 2012-5-31 23:18:30 | 显示全部楼层
回复 4# veket_linux

怎么这么复杂
发表于 2012-5-31 23:34:07 | 显示全部楼层
本帖最后由 netegg 于 2012-5-31 23:39 编辑
Dim $a = ''
For $i = 65 To 90
  For $j = 65 To 90
    If $i <> $j Then $a &= Chr($i) & Chr($j) & '|'
  Next
Next
$aA = StringSplit(StringTrimRight($a, 1), '|', 2)
MsgBox(0, 0, $aA[Random(0, UBound($aA) - 1, 1)])

两字母不同的
#include<array.au3>
Dim $a = ''
For $i = 65 To 90
  For $j = 65 To 90
    $a &= Chr($i) & Chr($j) & '|'
  Next
Next
$aA = StringSplit(StringTrimRight($a, 1), '|', 2)
_arrayunique($aA)
MsgBox(0, 0, $aA[Random(0, UBound($aA) - 1, 1)])

两字母有可能相同的
发表于 2012-5-31 23:42:04 | 显示全部楼层
本帖最后由 netegg 于 2012-5-31 23:44 编辑

回复 1# lele9013
组合一共是26×25(两字母不同,有顺序)个, 26×25/2(两字母不同,无顺序)个,26^2(两字母可相同,有顺序)个
发表于 2012-6-1 07:49:15 | 显示全部楼层
不知道全部要列出来的意义是什么?傻了!
发表于 2012-6-1 09:25:04 | 显示全部楼层
回复  lele9013
组合一共是26×25(两字母不同,有顺序)个, 26×25/2(两字母不同,无顺序)个,26^2(两字母 ...
netegg 发表于 2012-5-31 23:42



    正解。
发表于 2012-6-1 09:50:54 | 显示全部楼层
两字母不同的

两字母有可能相同的
netegg 发表于 2012-5-31 23:34


非常详细,学习了
发表于 2012-6-1 10:59:30 | 显示全部楼层
楼主的两个问题于编程角度讲关联不大。因为如要随机输出二个字母的组合,楼主自己二楼的代码基本能实现了。它输出的二个字母不会超出所有可能的组合,所以你可以不用管其它,即程序无需去生成所有的组合。如果要得到所有二个字母的组合,则二个循环就可解决,如3楼的代码。如硬要把上述二段代码组合在一起,那程序的功能是什么呢?感觉有点儿难受。
  所以楼主如只问第一个问题,或纯粹作为数学进行讨论,那倒是不错滴。
发表于 2012-6-1 18:37:59 | 显示全部楼层
怎么这么复杂

评分

1

查看全部评分

发表于 2012-6-6 10:41:16 | 显示全部楼层
这是数学问题
发表于 2012-6-6 17:31:11 | 显示全部楼层
貌似很复杂
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备15028933号-3 )谷歌 百度

GMT+8, 2018-12-15 09:01 , Processed in 0.113207 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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