PDA

View Full Version : سوال: تولید اعداد تصادفی و منحصر به فرد با PHP



amin7x
جمعه 22 آبان 1394, 15:10 عصر
سلام و خسته نباشید
من میخوام یک سری اعداد منحصر به فرد با تعداد کارکتر مشخص تولید کنم.
ممنون میشم راهنماییم کنید.

javadt
جمعه 22 آبان 1394, 20:27 عصر
سلام
شما می تونید از تابع uniqid استفاده کنید

<?php
echo uniqid();
?>
به این صورت یک رشته 13 رقمی تولید میکنه


<?php
echo uniqid(true);
?>

و به این صورت یک رشته 23 کاراکتری غیر تکراری تولید میکنه

amin7x
شنبه 23 آبان 1394, 09:44 صبح
سلام
شما می تونید از تابع uniqid استفاده کنید

<?php
echo uniqid();
?>
به این صورت یک رشته 13 رقمی تولید میکنه


<?php
echo uniqid(true);
?>

و به این صورت یک رشته 23 کاراکتری غیر تکراری تولید میکنه

سلام ممنون از پاسختون
اما من نیاز به کدی دارم که فقط عدد تولید کنه مانند تولید کد کارت شارژ.

kabootar_y
شنبه 23 آبان 1394, 10:58 صبح
امیدوارم به دردت بخوره همین الان نوشتم برا خودمم هم کاربردیه شاید یه وقت خودم هم ازش استفاده کنم






function uniqueId(){

$timeStamp = time();

$array = preg_split('//', $timeStamp, -1, PREG_SPLIT_NO_EMPTY);

$output = '';

foreach($array as $num){

$rand = rand(1,9);

if($rand%2 == 0)

{

$output .= $rand . $num;

}

else

{

$output .= $num . $rand;

}

}

return $output;

}




echo uniqueId();






خروجیش به صورت 15474179454879698386 میشه
تا جایی که میشد سعی کردم همه جاش هر دفعه تغییر کنه وتکراری هم نباشه

amin7x
شنبه 23 آبان 1394, 14:53 عصر
امیدوارم به دردت بخوره همین الان نوشتم برا خودمم هم کاربردیه شاید یه وقت خودم هم ازش استفاده کنم






function uniqueId(){

$timeStamp = time();

$array = preg_split('//', $timeStamp, -1, PREG_SPLIT_NO_EMPTY);

$output = '';

foreach($array as $num){

$rand = rand(1,9);

if($rand%2 == 0)

{

$output .= $rand . $num;

}

else

{

$output .= $num . $rand;

}

}

return $output;

}




echo uniqueId();




خروجیش به صورت 15474179454879698386 میشه
تا جایی که میشد سعی کردم همه جاش هر دفعه تغییر کنه وتکراری هم نباشه

ممنون اما متوجه شرط درون حلقه foreach نشدم. میشه بیشتر توضیح بدید؟

kabootar_y
شنبه 23 آبان 1394, 22:27 عصر
شرط درون حلقه میگه اگه مقدار $rand زوج بود عداد رندوم رو قبل از اعداد مربوط به زمان قرار بده و اگر فرد بود بعد از اعداد زمان
خیلی مهم نیست فقط خواستم هر دفعه که عدد تصادفی جدید ساخته میشه به جای این که این طوری باشه
12457657856548621541
12457657856541621534

این طوری بشه بهتره

12457657856548621541
54684668633446776361

امیدوارم منظورمو خوب متوجه شده باشی

در کل یعنی تفاوت بین خروجی هر دفعه با دفعه قبل رو بیشتر میکنه به جای اینکه هر بار یکی یا دو تا از رقم ها تغییر کنند