Lấy 3 số ngẫu nhiên thêm vào mảng

Cho em hỏi là làm sao để có thể lấy 3 số ngẫu nhiên bất kì cho vào mảng mà khác với các số khác có trong mảng.
em mới chỉ nghĩ ra dược như vầy:

<?php
	$checkrandom=array(1,2,3,4);	
	for($i=0;$i<3;$i++){
		$random=RAND(1,10);
		if(!in_array($random,$checkrandom)){
			array_push($checkrandom,$random);
		}else{
			//vẫn chưa biết phải làm sao ở chỗ này!
		}
	}
?>

mong các PRO chỉ giúp!

Làm 1 ctdl thứ hai lưu các số chưa được random thôi. Rồi random trong khoảng size của array đó để lấy số chỉ vị trí

Đơn giản:

<?php
	$checkrandom=array(1,2,3,4);	
	for($i=0;$i<3;$i++){
		$random=RAND(1,10);
		if(!in_array($random,$checkrandom)){
			array_push($checkrandom,$random);
		}else{
			$i--; // là thế này
		}
	}
?>

Hoặc gọn hơn:

<?php
	$checkrandom=array(1,2,3,4);	
	for($i=0;$i<3;){ // <---
		$random=RAND(1,10);
		if(!in_array($random,$checkrandom)){
			array_push($checkrandom,$random);
			$i++; // <---
		}
	}
?>

Có trường hợp có thể xảy ra lặp vô tận nếu chưa lặp xong (đủ số lượng cần thêm) mà mảng đã chứa tất cả các số ngẫu nhiên. Nên xét thêm điều kiện này.

2 Likes

Không hiểu mục đích thay đổi giá trị của biến điều khiển (ở đây là biến $i) để làm gì, trường phái nào cho phép làm điều này?

Tại sao không dùng while mà lại dùng for và manual thay đổi biến điều khiển trong vòng lặp

2 Likes

Cách “đơn giản” từ mã của bạn ấy.

Chính xác là dùng while.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?