要求前5位字母,后5位数字。尽量前面的字段是乱的不要很顺的那种

不会武功的猪 发布于 2015/05/25 17:18
阅读 162
收藏 1

CWWZG77465
WCPSU79396

想用PHP生成这样的10位码。估计要上亿

要求前5位字母,后5位数字。尽量前面的字段是乱的不要很顺的那种

加载中
0
houhuiliang
houhuiliang
function createRandCodeStr(){
	$chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
			'i', 'j', 'k','m', 'n', 'o', 'p', 'q', 'r', 's',
			't', 'u', 'v', 'w', 'x', 'y','z');
	$nums = array(0,1,2,3,4,5,6,7,8,9);
	$str = '';
	for($i=0;$i<5;$i++){
		$str .= strtoupper($chars[rand(0,24)]);
	}
	for($i=0;$i<5;$i++){
		$str .= $nums[rand(0,9)];
	}
	
	return $str;

}

echo createRandCodeStr();



0
不会武功的猪
不会武功的猪

引用来自“houhuiliang”的评论

function createRandCodeStr(){
	$chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
			'i', 'j', 'k','m', 'n', 'o', 'p', 'q', 'r', 's',
			't', 'u', 'v', 'w', 'x', 'y','z');
	$nums = array(0,1,2,3,4,5,6,7,8,9);
	$str = '';
	for($i=0;$i<5;$i++){
		$str .= strtoupper($chars[rand(0,24)]);
	}
	for($i=0;$i<5;$i++){
		$str .= $nums[rand(0,9)];
	}
	
	return $str;

}

echo createRandCodeStr();



这个重复几率大不???
houhuiliang
houhuiliang
重复几率不大,如果你怕还大,就把字符和数字再加大些,现在字母是5个,数字是5个
0
houhuiliang
houhuiliang
重复概率为:1/(25的5次方*10的5次方)
不会武功的猪
不会武功的猪
好的。谢谢
0
不会武功的猪
不会武功的猪

引用来自“houhuiliang”的评论

function createRandCodeStr(){
	$chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
			'i', 'j', 'k','m', 'n', 'o', 'p', 'q', 'r', 's',
			't', 'u', 'v', 'w', 'x', 'y','z');
	$nums = array(0,1,2,3,4,5,6,7,8,9);
	$str = '';
	for($i=0;$i<5;$i++){
		$str .= strtoupper($chars[rand(0,24)]);
	}
	for($i=0;$i<5;$i++){
		$str .= $nums[rand(0,9)];
	}
	
	return $str;

}

echo createRandCodeStr();



引用来自“不会武功的猪”的评论

这个重复几率大不???
不对哦。我们以前做的和你这个也一样的。
 $data['promotion_code_key'] = $rand_data_a[rand(0, 23)] . $rand_data_a[rand(0, 23)] . $rand_data_a[rand(0, 23)] . $rand_data_a[rand(0, 23)] . $rand_data_a[rand(0, 23)] . $rand_data_b[rand(0, 7)] . $rand_data_b[rand(0, 7)] . $rand_data_b[rand(0, 7)] . $rand_data_b[rand(0, 7)] . $rand_data_b[rand(0, 7)];


生成时,老重复。。这个方案还是不太对。。。
houhuiliang
houhuiliang
如果你要求0重复率,就把生成的字符串保存到数据库,每次生成检查下是否存在,存在就重新生成。数据库中这个字段设置为主键,这样检查会快一点。
houhuiliang
houhuiliang
不会吧,我生成100个,没有一个重复的
0
houhuiliang
houhuiliang

这种呢:

function createRandCodeStr(){
    $chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
            'i', 'j', 'k','l','m', 'n', 'o', 'p', 'q', 'r', 's',
            't', 'u', 'v', 'w', 'x', 'y','z');
    $nums = array(0,1,2,3,4,5,6,7,8,9);
    $str = '';
    for($i=0;$i<5;$i++){
        shuffle($chars);
        $str .= strtoupper($chars[rand(0,25)]);
    }
    for($i=0;$i<5;$i++){
        shuffle($nums);
        $str .= $nums[rand(0,9)];
    }
    
    return $str;

}

echo createRandCodeStr().'<br />';



houhuiliang
houhuiliang
每个字母和数字取得时,先随机化数组,再随机选取数组中的某一个值
返回顶部
顶部