PDA

View Full Version : تولید رنگ تصادفی در جاوا



saeedsoha
دوشنبه 19 تیر 1396, 16:49 عصر
سلام دوستان.
برنامه ای نوشتم که چند دایزه غیر هم رنگ تو در تو تولید میکنه.



public void paintComponent(Graphics g){
super.paintComponent(g);



//bigest Circel
g.setColor(Color.BLACK);
g.fillOval(50, 50, 200, 200);

//Circel 2
g.setColor(Color.YELLOW);
g.fillOval(75, 75, 150 , 150);

//Circel 3
g.setColor(Color.BLACK);
g.fillOval(100, 100, 100, 100);

// Circel center
g.setColor(Color.YELLOW);
g.fillOval(125, 125 , 50 , 50);



حالا بجای رنگ مشخص میخوام به وسیله تصادفی رنگ هارو انتخاب کنه . فک میکنم باید از سازنده color (int r, int g,int b) استفده کنم وای نمیدونم چجور پیادش کنم. ممنون میشم کمک کنید

vahid-p
دوشنبه 19 تیر 1396, 17:11 عصر
خب سازنده Color سه آرگومان میگیره که عددی بین ۰ تا ۲۵۵ هست. شما کافی بود دنبال تولید عدد تصادفی می بودید.
در کل عدد تصادفی از کلاس Random استفاده کنید و آزگومان سازنده (که همون seed هست) رو
Java.lang.System.currentTimeMillis()
بذارید.
بعدش کافیه از آبجکت نوع Random که ساختید با تابع nextInt یک عدد صحیح تصادفی بگیرید و با باقی مونده گرفتن به عدد ۲۵۶ و همچنین قدرمطلقش مقدار لازم رو بدست بیارید:

Math.abs(rand.nextInt()%256)

saeedsoha
دوشنبه 19 تیر 1396, 17:35 عصر
خب سازنده Color سه آرگومان میگیره که عددی بین ۰ تا ۲۵۵ هست. شما کافی بود دنبال تولید عدد تصادفی می بودید.
در کل عدد تصادفی از کلاس Random استفاده کنید و آزگومان سازنده (که همون seed هست) رو
Java.lang.System.currentTimeMillis()
بذارید.
بعدش کافیه از آبجکت نوع Random که ساختید با تابع nextInt یک عدد صحیح تصادفی بگیرید و با باقی مونده گرفتن به عدد ۲۵۶ و همچنین قدرمطلقش مقدار لازم رو بدست بیارید:

Math.abs(rand.nextInt()%256)



من اینکارو کردم! و این هم درست بود. اگه فکر میکنید ایرادی داره بفرمایید

//bigest Circel
g.setColor(Colorrgb());
g.fillOval(50, 50, 200, 200);

//Circel 2
g.setColor(Colorrgb());
g.fillOval(75, 75, 150 , 150);

//Circel 3
g.setColor(Colorrgb());
g.fillOval(100, 100, 100, 100);

// Circel center
g.setColor(Colorrgb());
g.fillOval(125, 125 , 50 , 50);


}

public static Color Colorrgb(){

SecureRandom random = new SecureRandom();

Color rgb = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256));

return rgb;

}


}

vahid-p
سه شنبه 20 تیر 1396, 02:15 صبح
اگر جواب میده درسته دیگه. فقط الگوریتم های این دو random generator متفاوته که مهم نیست.