随机获取汉字

本文深入探讨了一种用于随机生成指定数量汉字的算法实现。通过分析代码逻辑,我们了解到算法如何从预设的字库中抽取汉字,确保生成的字符串既符合要求又不重复。此外,还介绍了算法在不同场景下的应用潜力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * @随机获取汉字
 */
function get_hz($giveStr="",$num=10){
    $str = "哈森撒大葱撒出的主要产品是听见啦金玉良缘冰清玉洁继往开来锦绣山河冰雪聪明功成名就桃花潭水深千尺不及汪伦送我情先帝创业未半而中道今天下三分益州疲弊此诚危急存亡之秋也然侍卫之臣不懈于内忠志之士忘身于外者盖追先帝之殊遇欲报之于陛下也诚宜开张圣听";# 字库
    $newStr  = "";       # 随机生成的包含答案的字符串
    $anLo    = array();  # 设定的答案所在的位置。
    $bit     = 1;        # 位数,在本系统中是utf-8编码,一个中文长度为3
    $anLenth = floor(strlen($giveStr)/$bit); # 答案长度,在UTF编码中,

    # 这些汉字在18个汉字中的位置
    $i = 0;
    while ( $i<$anLenth ) {
        $rd = rand( 0, $num-1 );
        if(in_array($rd,$anLo)) continue; # 保证了不重复。
        $anLo[] = $rd;
        $i++;
    }

    for( $j=0; $j<$num;$j++ ){
        if(in_array($j,$anLo)){
            $k = array_search($j,$anLo);
            $newStr .= mb_substr($giveStr,$k*$bit,$bit); #echo $newStr."<br>";

        } else {
            $rd  = rand(0,(strlen($str)-1)/$bit);
            $wd  = mb_substr($str,$rd*$bit,$bit);
            $str = str_replace($wd, '', $str);
            $newStr .= $wd;
        }
    }
    return $newStr;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值