第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在PHP中生成具有3位數(shù)字且每個(gè)數(shù)字中沒有雙數(shù)字的唯一數(shù)字

如何在PHP中生成具有3位數(shù)字且每個(gè)數(shù)字中沒有雙數(shù)字的唯一數(shù)字

PHP
人到中年有點(diǎn)甜 2022-01-14 16:50:15
我想在 120 對(duì)中生成 3 位數(shù)字 沒有重復(fù)和重復(fù)的數(shù)字 示例:012013、132 有效 011,333、022,202210無效 注意:冗余數(shù)字都出現(xiàn)因此012無效210我正在使用 PHP 版本 5.6.28 Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/5.6.28 這是我迄今為止嘗試過的,但沒有運(yùn)氣。數(shù)計(jì)數(shù):120 027 028 029 036 038 046 069 074 079 093 105 106 109 123 143 145 149 152 153 162 167 175 182 195 198 204 208 213 216 217 219 235 243 275 287 294 301 302 310 327 341 342 347 352 357 358 365 369 376 378 380 384 392 402 408 415 423 428 431 453 465 467 468 490 493 496 506 509 510 512 524 537541 561 573591 597 598 609 629 631 634 639 647 689 691 694 697 703 719 723 743 745 750 752 759 761 813 819 820 824 829 840 865 875 890 905 907 912 916 917 921 930 941 945 947 963 965 973 984注意這里537是573無效的/*----Numbers.php----*/class Numbers{    private $num_set = array();//get 3 digit    private $num_basket = array(); //container    public $codeNum = "0123456789";    public function get_basket(){        return $this->num_basket;    }    public function put_basket($num){        $this->num_basket[] = $num;    }    public function is_exist($num_taken){        if(in_array($num_taken, $this->num_basket)){            return true;        }else{            return false;        }            }    public function generate_num(){        while(count($this->num_set) < 3){            $get_one_digit = $this->getToken(1);            if(!in_array($get_one_digit, $this->num_set)){                $this->num_set[] = $get_one_digit;            }        }        $three_digit = implode($this->num_set);        $this->num_set = array();        return $three_digit;    }    protected function getToken($length)    {        $token = "";        $max = strlen($this->codeNum); // edited        for ($i=0; $i < $length; $i++) {            $token .= $this->codeNum[$this->crypto_rand_secure(0, $max-1)];        }           return $token;    }}代碼工作正常,不顯示錯(cuò)誤,但不顯示預(yù)期結(jié)果。我真的需要幫助。我將不勝感激任何幫助。
查看完整描述

1 回答

?
寶慕林4294392

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊

我重寫了代碼,因?yàn)槲艺J(rèn)為類和類之外的代碼組合太多,這會(huì)產(chǎn)生很多依賴(恕我直言)。


在這段代碼中,您創(chuàng)建一個(gè)類并說出您想要生成多少個(gè)數(shù)字,然后調(diào)用該generate()方法為您完成所有工作。


為了檢查之前是否使用過這些數(shù)字,我將數(shù)字編碼到一個(gè)位字段并存儲(chǔ)它(該encode()方法只是根據(jù)使用的數(shù)字添加二進(jìn)制數(shù)字)。如果同樣的模式再次發(fā)生,它只會(huì)嘗試另一個(gè)模式。


class NumberGenerator{

    private $numbersUsed = [];

    private $basket = [];

    private $numbersToGenerate = 0;


    public function __construct( int $numbersToGenerate )   {

        $this->numbersToGenerate = $numbersToGenerate;

    }


    public function generate(){

        $numbers = range(0,9);

        for ( $i = 0; $i < $this->numbersToGenerate; $i++ ) {

            do    {

                shuffle($numbers);

                $number = array_slice($numbers, 0,3);

                $encoded = $this->encode($number);

            }

            while ( in_array($encoded, $this->numbersUsed) );

            $this->basket[] = implode($number);

            $this->numbersUsed[] = $encoded;

        }


        return $this->basket;

    }


    protected  function encode(array $num)  {

        $numbers = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512];

        $sum = 0;

        foreach ( $num as $digit )  {

            $sum += $numbers[$digit];

        }

        return $sum;

    }

}


$generator = new NumberGenerator(120);

print_r($generator->generate());


查看完整回答
反對(duì) 回復(fù) 2022-01-14
  • 1 回答
  • 0 關(guān)注
  • 183 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)