ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingสุ่มตัวเลขออกมา 5 ตัวใ้ห้รวมกันได้ 500 พอดี
หน้า: 1 [2]  ทั้งหมด   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: สุ่มตัวเลขออกมา 5 ตัวใ้ห้รวมกันได้ 500 พอดี  (อ่าน 5722 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
seoโออิชิ
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 53
ออฟไลน์ ออฟไลน์

กระทู้: 1,051



ดูรายละเอียด
« ตอบ #20 เมื่อ: 08 มีนาคม 2012, 10:28:44 »

เขียนสั้นสุด ง่ายสุด แต่โปรแกรมทำงานนานสุด

ตั้งค่า ตัวแปล 5 ตัว a,b,c,d,e = 0-200
แล้วให้มัน แรนด้อม ไปเลย ผลลับออกมาได้เท่าไหร่นำมาบวกกันถ้าไม่เท่ากับ 500 ให้แรนด้อมใหม่ทั้งหมด ถ้าเท่ากับ 500 สั่ง print
ถ้าเทียบกับของผมอันบน
แล้วแต่ ความต้องการครับว่า ต้องการให้เขียนโปรแกรมให้สั้นสุด หรือเขียนให้รันเร็วสุด
แต่แบบนี้กว่าจะได้แต่ล๊ะ case นานกว่ามาก   wanwan024 wanwan004
บันทึกการเข้า

. . ช้า ๆ ได้พร้าเล่มงาม เร็ว ๆ ได้พร้าอย่างงาม 2 เล่ม . . .
guzzilar
Verified Seller
ก๊วนเสียว
*

พลังน้ำใจ: 48
ออฟไลน์ ออฟไลน์

กระทู้: 494



ดูรายละเอียด
« ตอบ #21 เมื่อ: 08 มีนาคม 2012, 10:52:40 »

เขียนสั้นสุด ง่ายสุด แต่โปรแกรมทำงานนานสุด

ตั้งค่า ตัวแปล 5 ตัว a,b,c,d,e = 0-200
แล้วให้มัน แรนด้อม ไปเลย ผลลับออกมาได้เท่าไหร่นำมาบวกกันถ้าไม่เท่ากับ 500 ให้แรนด้อมใหม่ทั้งหมด ถ้าเท่ากับ 500 สั่ง print
ถ้าเทียบกับของผมอันบน
แล้วแต่ ความต้องการครับว่า ต้องการให้เขียนโปรแกรมให้สั้นสุด หรือเขียนให้รันเร็วสุด
แต่แบบนี้กว่าจะได้แต่ล๊ะ case นานกว่ามาก   wanwan024 wanwan004
จัดไป

<?php
do{
   $a   = rand(0,200);
   $b   = rand(0,200);
   $c   = rand(0,200);
   $d   = rand(0,200);
   $e   = rand(0,200);
}while($a+$b+$c+$d+$e != 500);

echo $a.'--'.$b.'--'.$c.'--'.$d.'--'.$e;
echo '<br/>';
echo $a+$b+$c+$d+$e;
?>

 wanwan004 wanwan004 wanwan004
บันทึกการเข้า

Rest in Home
ahon
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 72
ออฟไลน์ ออฟไลน์

กระทู้: 1,261



ดูรายละเอียด เว็บไซต์
« ตอบ #22 เมื่อ: 08 มีนาคม 2012, 11:33:58 »

<?php

//ลองแบบผมดู

$tmp = array();
$min = 10;
$max = 200;
$max_all = 500;

// res val
$sum= 0;
$max_tmp = 0;

for($i=0;$i<5;$i++){
 $tmp[$i]=  rand($min,$max);
}

for($i=0;$i<10;$i++){
  $sum = get_sum($tmp);
  if($sum > $max_all){
     
    $adj = $sum - $max_all ;
     $ik_slot = rand(0,4);
   
     if( $tmp[$ik_slot] - $adj > $min ){
     $tmp[$ik_slot] -= $adj ;
     break;
   
    }else{
         if( $tmp[$ik_slot] - ($adj/2) > $min ){
         $tmp[$ik_slot] -= (int)($adj/2) ;
         break;
          }
     }
     

  }else{//ทำตรงข้ามกับเคสด้านบน


  }

}

// show
var_dump($tmp);

//////////////////////////////////
function get_sum($tmp){
$sum = 0;
  for($i=0;$i<5;$i++){
     $sum += $tmp[$i];
  }
  return $sum;
}


?>
« แก้ไขครั้งสุดท้าย: 08 มีนาคม 2012, 11:57:05 โดย ahon » บันทึกการเข้า

NightClub
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 297
ออฟไลน์ ออฟไลน์

กระทู้: 2,461



ดูรายละเอียด เว็บไซต์
« ตอบ #23 เมื่อ: 09 มีนาคม 2012, 03:18:47 »

เพิ่งคิดได้เมื่อเช้า เลยมาเสริมนิด

โค๊ด:
$randomcount = 0;
$status = array('str','agi','vit','int','luk');
for($i=0;$i<500){
$point = rand(0,1);
if($point){ $i = $i+1;}
$status[$randomcount] = $status[$randomcount]+$point;
$randomcount = $randomcount+1;
if($randomcount == count($status)){ $randomcount = 0;}
}

บันทึกการเข้า

รับจ้างเขียนโปรแกรม PHP งานมืออาชีพ เสร็จตามที่กำหนด ราคาปานกลาง
เหมาะกับผู้ที่รับงานมาแล้วส่งต่อจ๊ะ PM มาเลย
หน้า: 1 [2]  ทั้งหมด   ขึ้นบน
พิมพ์