1. Hướng dẫn sinh số ngẫu nhiên trong pascal
Để sinh số ngẫu nhiên trong pascal đầu tiên bạn phải đặt câu lệnh ” randomize; ” ở đầu chương trình. câu lệnh này có chức năng sinh ra số khác với lần sinh trước đó. nếu không có nó bạn sẽ thường xuyên thấy nó giống với lần chạy trước đó.
sử dụng sử dụng random:
Random(N); { kết quả sẽ trả về là 1 số nguyên trong đoạn từ [0..N-1] }.
Như vậy VD nếu bạn muốn sinh ra số ngẫu nhiên trong khoảng [0..25] chẳng hạn thì phải viết như sau:
begin randomize; writeln(random(26)); readln; end.
và tùy theo bạn muốn ngẫu nhiên trong đoạn nào. thì bạn có thể dùng repeat until để chặn điều kiện hoặc có thể dùng phép cộng trừ 😀 các bạn cứ comment phía dưới. mình sẽ viết code cho.
2. Bài tập cơ bản minh họa về ứng dụng hàm random
Đối với các bạn chuyên tin: thì Hàm random đôi lúc cũng giải quyết được các bài toán lớn. random kết hợp với xác xuất có thể giải quyết từ 70% -> 100% test. đôi lúc độ phức tạp thuật toán quá lớn bạn có thể áp dụng kỹ thuật này để xử lí.
Bạn ơi thế nếu mình muốn gán random vào 1 biến thì sao? Mình dùng code sau thì báo lỗi:
var a: integer;
begin
randomize;
a:=random(100);
write(a);
readln;
end.
code này ko có lỗi và chạy bình thường mà ta?
http://ideone.com/E6MCLG
ko biết bạn đang dùng turbo pascal hay free pascal nhỉ?
bạn có thể dùng FPC tại đây https://kienthuc24h.com/download-free-pascal/
Mơn bạn nhiều ^^ Code của mình lỗi chính tả -_- Gõ nhanh nên random -> ramdom, gặp toàn màu vàng nên chả thấy =))
ukm, chúc bạn học tốt 😀
Bạn ơ làm sao để random cái hình tam giác sao ra nhiều màu ạ.
Nhập số nguyên N
Tạo dãy A
Không biết còn ai ở đây không, giúp mình với, hông liên quan lắm, nhưng mà mình hông biết cách khai báo biến file trong pascal nếu nó là input,output rồi thì mình khai báo text đc hông dậy?
Cho mình hỏi muốn tạo ra n số Nguyên tố khác nấu trong a b ta làm như thế nào?
Bạn tạo một mảng chứ các số nguyên tố. Sau đó dùng random để lấy ngẫu nhiên nha.
Em tạo được mảng nguyên tố rồi mà không biết cách random ngẫu nhiên từ mảng nó.! Anh chỉ em cái
Chào bạn, đây là code bạn cần nhé.
Bạn phải khai báo thư viện crt
uses crt;
Thư viện crt để nhập xuất từ bàn phím nha ban, ở trên mình không có nhập xuất nên không cần dùng vẫn không sao.
ban chua khai bao thu vien roi
uses crt; nha 🙂
? Chắc ko?
minh làm vẫn ngon mà program chedorandom;
uses crt;
var n : integer;
begin
writeln(‘tên’);
readln;
randomize;
n:=(random(3));
if n=1 then
writeln(‘đẹp trai vô đối’);
if n=2 then
writeln(‘ óc chos vô cùng’);
if n=3 then
writeln(‘Bị Bê Đê’);
if n=0 then
writeln(‘Thông minh’);
readln;
end.
a:=(random(100));
uses crt nha bn
Bạn kiểm tra lại đi tớ vẫn chạy được mà
Bạn ơi mình muốn random từ 1 đến 100 hay 1 đến n số nào đó thì sao bạn??
bạn cho mình ví dụ cụ thể được không. thanks
begin
randomize;
writeln(random(99)+1); // Để random từ 1-> 100;
// ngoài ra để random từ 1 ->N bạn viết writeln(random(n-1)+1); nhớ khai báo N.
end.
// Bạn thay đổi email trong profile để nhận dc thông báo khi có phản hồi nhé. Thân
Mình đã làm y như vậy nhưng chỉ xuất ra 1 số chứ không phải n số
Mình đã làm y như vậy nhưng cũng chỉ ra đc 1 số chứ không phải n số
thank bạn:> Comment hữu dụng nhất :>
anh ơi random từ 1..6 thì làm như thế nào
Không biết còn ai ở đây không giúp mình với, khôg liên quan lắm nhưng mà không biết khai báo biến của file input,output là kiểu dữ liệu nào?
Mình đã làm y như vậy nhưng cũng chỉ ra đc 1 số chứ không phải n số
neu minh muon sinh ngau nhien tu 50->60 thi sao ha ban? ban chi cho minh cach lam di
bạn có thể viết
begin
randomize;
writeln(random(10+1)+50+1);
end.
Random(10+1) sẽ cho bạn giá trị từ 0->10, bạn cộng 50 lên sẽ được 50->60
Hoặc bạn cũng có thể dùng repeat until để cài nhé
var z:longint;
begin
randomize;
repeat
z:=ranom(60+1);
until (z>=50) and (z<=60); writeln(z); end.
cách chọn ngau nhien 5 cau hoi từ 7 cau hoi
Ví dụ các câu hỏi được đánh số từ 1->7 thì đơn giản là bạn gọi hàm random 5 lần thôi 😀 tuy nhiên là câu hỏi thì sẽ k trùng lại đúng ko? Nên bạn phải thêm mảng đánh dấu. Mình sẽ viết thử cho bạn
Var i,x:longint:
Dd:array[1..7] of boolean;
Begin
Fillchar(dd,sizeof(dd),false);
For i:=1 to 5 do
Begin
Repeat
X:=random(7)+1;
Until dd[x]=false;
Dd[x]:=true;
Writeln(x);
End;
Readln;
End.
Với code này, các số sẽ dc chọn ko trùng nhau và chọn 5 lần. Các số được chọn sẽ ghi ra màn hình.
Chúc bạn học tốt.
minh muon random tu -49999 den 50000 thi phai lam sao ban
begin
randomize;
writeln(random(100000)-49999);
end.
giúp mình giải bài này nha , tạo 100 số ngẫu nhiên từ 0 đến 99 , các số không được trùng nhau nha , cảm ơn bạn nhiều .
Var i,x:longint:
Dd:array[0..99] of boolean;
Begin
Fillchar(dd,sizeof(dd),false);
For i:=1 to 100 do
Begin
Repeat
X:=random(100);
Until dd[x]=false;
Dd[x]:=true;
Writeln(x);
End;
Readln;
End.
Dạng này ở trên mình có làm r á bạn :d
cho minh hoi fillchar,sizeof la gi zay
Chào bạn, fillchar thủ tục để bạn điền tất cả đối tượng trong mảng bằng 1 giá trị nhất định. sizeof là giới hạn của cái mảng, thông thường dùng fillchar thì phải dùng nó.
Góp ý bạn 1 tí: sau này comment hỏi thì bạn vui lòng điền đúng địa chỉ email và có văn hóa một tí giúp mình nhé ([email protected]) cả các thông tin khác nữa. Nếu lần sau vẫn tiếp tục như thế mình có quyền không hỗ trợ.
Thân mến
giúp minh nha : tạo 100 số ngẫu nhiên từ 0 đến 99 , các số không được trùng nhau nha , cảm ơn bạn nhiều
A[i] := random(301)- random(301); no nghia la ji ?
Như mình đã nói ở trên, random(a) với a là 1 biến sẽ cho miền giá trị từ 0 đến a-1.
Như vậy, random(301) có giá trị từ 0 den 300.
Giả sử phần đầu đạt min=0, và phần sau đạt max 300 thì a[i] là -300. Và phan dau max=300 va phan sau min=0. Như vậy a[i,j] nhận miền giá trị từ -300…300
bạn ơi chỉ mình cách khai báo mảng hai chiều có sử dụng randomize đi
Chào bạn, mảng 2 chiều, một chiều hay biến thì đều khai báo bình thường thôi. randomize có chức năng tạo số ngẫu nhiên khác với số ngẫu nhiên trước đó. bạn chỉ cần bỏ nó ở trước khi gọi hàm random là được. còn hàm random bạn gọi nó thì nó sẽ trả về giá trị, bạn muốn sinh giá trị ngẫu nhiên trên mảng 2 chiều thì duyệt 2 dòng for cho a[i,j]:=random(….. như vậy thôi bạn. nếu bạn không hiểu thì gửi đề bài mình xem giúp cho.
bạn cho mình hỏi tại sao khi dùng random để tạo 1 dãy số ngẫu nhiên thì số đầu tiên luôn là 0 vậy
Hi bạn, bạn cho mình hỏi là ban đã viết thêm hàm randomize ở đầu chương trình chưa ạ? và để chắc chắn vấn đề bạn đang gặp hãy up code lên ideone rồi send link qua đây để mình xem giúp cho
thank, đúng là mình chưa viết randomize ở đầu, mình sắp thi tin học trẻ nên chắc nhờ ad giúp đỡ nh` nha!!
🙂 hi, thời gian này mình cũng bận ôn thi ĐH nên chưa biết có giúp được bạn không. Nhưng nếu mình tl dc gì thì mình sẽ reply 🙂
z chúc ad thi tốt nha
ad giúp em bài này dc ko
Tìm ra một dãy con gồm nhiều nhất các phần tử nằm liền kề nhau có giá trị tăng dần khi duyệt từ đầu đến cuối dãy ban đầu.
Bài này dễ mà bạn, nhưng hiên tại mình rất bận, khoảng 1, 2 tháng nữa nhé bạn.
Tạo một dãy gồm n (3 < n < 20) số nguyên nhận các giá trị ngẫu nhiên từ 1 đến 99. Xuất dãy và xuất ra vị trí các số nguyên tố của dãy.
Dữ liệu vào: Số nguyên n có giới hạn theo đề.
Kết quả ra: Mảng a ngẫu nhiên và vị trí các số nguyên tố trong mảng.
aad giúp vs ms nghĩ ra ý tưởng chứ chưa biết viết kiểu j
ko sao, chỉ là đề thi năm trước nên mình hỏi lại thôi
ad ơi giúp vs ms nghỉ ra ý tưởng chưa biết viết sao Tạo một dãy gồm n (3 < n < 20) số nguyên nhận các giá trị ngẫu nhiên từ 1 đến 99. Xuất dãy và xuất ra vị trí các số nguyên tố của dãy.
Dữ liệu vào: Số nguyên n có giới hạn theo đề.
Kết quả ra: Mảng a ngẫu nhiên và vị trí các số nguyên tố trong mảng.
Hiện tại em đã giải được bài này chưa?
ad up code lên tham khảo luôn đi
ad up code lên tham khảo đi
Viết chương trình thực hiện sinh n (n<100) số nguyên dương ngẫu nhiên bé hơn 1000, in ra màn hình tổng các số chia hết cho 5
var n,i,s:longint;
a:array[1..100] of longint;
begin
s:=0;
randomize;
readln(n);
for i:=1 to n do
a[i]:=random(1000)+1;
for i:=1 to n do
if a[i] mod 5 =0 then
s:=s+1;
writeln(s);
end.
đề của bạn chưa rõ ràng, “in ra màn hình tổng các số chia hết cho 5” là số lượng số? ở trên mình làm theo số lượng. nhưng câu b ghi là tổng. đề này chưa thật sự rõ ràng
Ad ơi ! nếu muốn in ra mảng 2 chiều n số ngẫu nhiên nhưng chỉ là chẳn ( hoặc lẻ ) thôi thì làm thế nào ?
Ad ơi ! nếu muốn in ra mảng 2 chiều n số ngẫu nhiên Toàn chẳn ( hoặc lẻ ) thì làm sao ?
một mảng 2 chiều vuông phải k bạn?
mảng hai chiều có cột và dòng nhập vào từ bàn phím ạ
dễ thôi
// số chẳn
var n,i,j,s:longint;
a:array[1..100,1..100] of longint;
begin
s:=0;
randomize;
readln(m,n);
for i:=1 to m do
begin
for j:=1 to n do
begin
repeat
s:=random(100000);
until s mod 2=0;
write(s,’ ‘);
end;
writeln;
end;
end.
// số chẳn
var n,j,i,s:longint;
a:array[1..100,1..100] of longint;
begin
s:=0;
randomize;
readln(m,n);
for i:=1 to m do
begin
for j:=1 to n do
begin
repeat
s:=random(100000);
until s mod 2<>0;
write(s,’ ‘);
end;
writeln;
end;
end.
~ oh ~ mơn ad
Chao b co ham sinh ngau nhien so thuc trong pham vi tu 0 den 1 k? Chi m cach lam voi.thank b nhiu nhiu
chào bạn 😀
Trong pascal không hỗ trợ random số thực nha bạn, nhưng nếu bạn giỏi thì có thể thừa sức viết được hàm random số thực bằng cách sinh 1 số nguyên thông thường, rồi chèn phẩy vô là thành số thực rồi 😀 Tuy nhiên bạn phải cố định số chữ số có nghĩa.
Thân mến
random(100000) sao ko được ad?
được chứ bạn? bạn gửi code bị lỗi lên đây. mình sẽ chỉnh cho
ad ơi giúp em với ạ
viết chương trình phát sinh n phần tử số nguyên, n>=100 nhập từ bàn phím, thực hiện.
a) in mảng
b) Kiểm tra xem mảng có tăng dần hay ko, nếu ko thì sắp xếp tăng dần, in mảng vừa sắp xếp
c) tạo mảng 1 chiều B có k phần tử chẵn có trong mảng A
…mong ad giúp giùm ạ…
ad ơi, giúp mình bài này liền được không ạ: tạo một dãy số nguyên bất kì từ hàm random gồm n số (n nhập vào từ bàn phím). tìm tất cả các số âm trong dãy trên và in kết quả ra màn hình. thanks
uses crt;
var n,i:integer;
a:array[1..100] of integer;
begin clrscr;
write(‘ Nhap so phan tu: ‘);readln(n);
for i:=1 to n do a[i]:=(random(200)-50);
write(‘ Day so nguyen ngau nhien: ‘);
for i:=1 to n do write(a[i]:4);
writeln;
write(‘ Cac so am:’);
for i:=1 to n do if a[i]<0 then write(a[i]:4);
readln;
end.
mình có bài lập trình kiểu trả lời câu hỏi như kiểu ai là triệu phú ý,nhưng đơn giản chỉ cần chữ thôi chứ ko cần đồ họa.
mình tạo 1 file câu hỏi rồi…nhưng ko biết cách lấy ngẫu nhiên câu hỏi ra và ngẫu nhiên sắp xếp đáp án
ad giúp mình với ạ! thanks ad!!! <3
làm cho mình bài này với
Có 12 hòn bi giống hệt nhau về kích thước, hình dáng và khối lượng. Tuy nhiên trong chúng lại có đúng một hòn bi kém chất lượng: hoặc nhẹ hơn hoặc nặng hơn bình thường. Dùng một cân bàn hai bên, bạn hãy dùng 3 lần cân để tìm ra được viên bi đó. Cần chỉ rõ rằng viên bi đó là nặng hơn hay nhẹ hơn.
Viết chương trình mô phỏng việc tổ chức cân các hòn bi trên. Dữ liệu về hòn bi kém chất lượng do người sử dụng chương trình nắm giữ. Yêu cầu trình bày chương trình đẹp và mỹ thuật.
giúp mình với
tạo một file văn bản có tên songuyen.txt trên ổ đĩa c
dòng đầu ghi một số nguyên dương N(N<= 100) vào từ bàn phím
dòng 2 trở đi ghi N số nguyên dương (có phạm vi 0 đến 49) hai số cách nhau 2 dấu cách
(sử dụng hàm random(n) nhé)
thank các bạn nhìu
cho em hỏi:
trong tubopascal em dùng lệnh gán random nó báo lỗi là sao anh
randomize;
a:=random(100);
nó báo lỗi gì vậy em?
Bạn code giúp mình bài này với? Nhập 100 số nguyên rồi in ra ngẫu nhiên 10 số khác nhau?
Viết chương trình trò chơi “thử vận may” theo mô tả như sau:
Đầu tiên máy tính sinh một số ngẫu nhiên n để biểu diễn số lượt chơi
Ở mỗi lượt chơi, máy tính sẽ sinh một số ngẫu nhiên. Trước khi thông báo số này, người chơi sẽ đoán đó là số chẵn (bằng cách nhập số 0) hay lẻ (bằng cách nhập số 1).
Kết thúc n lượt chơi, máy tính sẽ thông báo số lần đoán đúng và tỷ lệ đoán đúng của người chơi và thông báo về “sự may mắn” của người chơi, nếu tỷ lệ đoán đúng là:
+ Từ 80% trở lên thì thông báo “rất may mắn”
+ Từ 65% đến dưới 80% thì thông báo “may mắn”
+ Từ 50% đến dưới 65% thì thông báo “bình thường”
+ Dưới 50% thì thông báo “không may mắn”.
muốn lấy một số ngẫu nhiên mà loại trừ số 2 thì làm sao hả ah?
mk xin thay mặt ad trả lời câu hỏi này
vd
program random;
uses crt;
var a:integer; {mk k khai báo n vì đó là số bạn có thể thay vào}
begin
a:=2;
while a = 2 do
begin
randomize;
a:=random(n);
end;
a:=n
end;
giải thích: cho tới khi a = 2 mà sai thì sẽ k thực hiện gán a nữa tức là a phải khác 2 mới kết thúc
ad ơi mình muốn hỏi mình muốn sinh ngẫu nhiên các phép toan +, -, *, / trong pascal thì làm thế nào ạ
Bạn có thể sử dụng random ra số từ 0->3
bạn quy ước 0 là +,1 là -, 2 là *, 3 là /, sau đó bạn có thể dùng lệnh if hoặc switch case để thực hiện ý đồ của mình.
Chúc bạn thành công
Bây giờ mình muốn viết 1 chương trình mở khóa bằng các phép tính ngẫu nhiên với các số ngẫu nhiên (số nguyên á bạn) như sau: nếu nhập kết quả đúng thì mở khóa,sai thì khóa lun đén khi tính đún thì thui ,bạn ưi bạn viết giúp mình vs mình dùng Free Pascal loại mới nhất nha bạn..trong chương trình phãi có câu lệnh lưu mật khẩu nha bạn
Bạn muốn làm kiểu như captcha phải không bạn?
Hiện bây giờ mình không còn code pascal nữa, nhưng mình sẽ gợi ý bạn cách làm như sau:
Mình sẽ làm dạng A+B = ???
vậy đầu tiên bạn dùng Hàm random sinh ra 2 biến A B, như vậy nhiệm vụ còn lại là bạn random phép tính + – hay nhân thôi.
Bạn có thể random từ số 0 đến số 2 và coi 0 là cộng, 1 là trừ, 2 là nhân, sau đó xử lí if else , vòng lặp, v.v… để giải quyết bài này nhé.
Chúc bạn thành công.
ad chỉ cách sắp xếp ngâu nhiên cả chữ và số xuất ra thành từng dòng gồm 20 ký tự đi thank ad
em ms hk pascal a có tài liệu nào về ma trận thì cho e xin ạ
em ms hk pascal a có tài liệu nào về ma trận thì cho e xin với ạ
random + xác xuất 🙂
Hi bạn, không biết có vấn đề gì không bạn?
Bạn ơi mình dùng hàm random(n); kèm theo với randomize; mà sao mình vẫn ra cùng một kết quả?
giúp mình với
Bạn gửi code lên đi, mình sẽ xem thử
Thôi, khỏi cần đâu. Do mình nhập lệnh random(1) nên nó cứ cho ra số 0 hoài. Cảm ơn vì đã trả lời mình nhé 😀
Oke bạn. 😀
Bạn ơi!, sap sep các số cua lệnh random tăng dần thì sao ?
Bạn ơi!, sap sep các số cua lệnh random tăng dần thì sao ?
Mình ko biết, giúp mình với
gan cho a:=(6) duoc ko anh
Nhập số nguyên N
Tạo dãy A gồm N số nguyên ngẫu nhiên trong khoang [0..100]
Tính tổng các số trong dãy
Tìm số lớn nhất ,nhỏ nhất của dãy số
Dưc ra màn hình các giá trí tìm được
Nhập số N nguyên cho mảng hai chiều có chiều dài và rộng bằng nhau. Random sau cho các cột và các hàng không trùng nhau.
cho mk hỏi random từ -100 đến 100 lm thế nào vậy?
ko liên quan lắm mà cho mình hỏi, fillchar để làm j vậy ạ và cách dùng như thế nào ?
bạn ơi mình muốn viết chương trình random bốc ra 5 số ngẫu nhiên từ một mảng có n chữ số có thể giống, có thể khác nhau, rồi lấy chữ số lớn nhất trừ số nhỏ nhất trong 5 số ngẫu nhiên đó liên tục sao cho kết quả thu được là nhỏ nhất. Bạn giúp mình với được không?
ad ơi random từ 1..7 thì làm như thế nào