[英]Using math.random (not java.util.random/nextInt) to pull object out of an array?
我試圖為一個項目從數組中隨機抽取一個對象,但是我必須使用Math.Random,但不確定如何。 使用java.util.random和nextInt可以很好地完成工作,但是我不能使用它們。 我已經看到了有關math.random這類問題的其他答案,但大多數答案是從數組中拉出隨機對象的索引,而不是對象本身。
這是我的課程:(現在,我在循環中有random和nextInt只是為了展示它應該如何工作,但是我需要從Math.random中獲得完全相同的結果)
import java.util.Scanner;
import java.util.Random;
public class Madlibsdriver
{
static Scanner scan= new Scanner (System.in);
public static void main(String[] args)
{
System.out.print ("Welcome to Mad libs!");
System.out.println();
System.out.println("----------------------------------------------");
System.out.println("Enter a noun:");
String ip1= scan.nextLine();
System.out.println("Enter an adjective:");
String ip2= scan.nextLine();
System.out.println ("Enter a verb:");
String ip3= scan.nextLine();
System.out.println ("Enter an adverb (ex: angrily) :");
String ip4= scan.nextLine();
System.out.println ("Enter another noun:");
String ip5= scan.nextLine();
Phrase obama= new Obama(ip1, ip2, ip3, ip4, ip5);
Phrase shake= new Shakespeare (ip1, ip2, ip3, ip4, ip5);
Phrase horror= new Horror (ip1, ip2, ip3, ip4, ip5);
Phrase mystery= new Mystery (ip1, ip2, ip3, ip4, ip5);
Phrase romance= new Romance (ip1, ip2, ip3, ip4, ip5);
Phrase[]libs= new Phrase [5];
libs[0]= obama;
libs[1]= shake;
libs[2]= hooror;
libs[3]= mystery;
libs[4]= romance;
System.out.println("Press 1 to generate a mad lib or 2 to exit.");
int begin= scan.nextInt();
while ((ip1.length()>0)&& begin==1)
{
Random rand = new Random();
System.out.println();
System.out.println ( libs[rand.nextInt(libs.length)]);
System.out.println("---------------------------------------");
System.out.print ("To play again, press 1. To exit, press 2.");
begin=scan.nextInt();
if (begin==2) break;
}
}
}
我想您可以使用類似以下的內容。
public static int getRandom(int max) {
return (int) Math.floor(Math.random() * (max + 1));
}
然后獲得長度為n> 0的數組arr的索引:
arr[getRandom(n - 1)]
嘗試更改:
Random rand = new Random();
System.out.println();
System.out.println ( libs[rand.nextInt(libs.length)]);
有:
int length = libs.length;
double val = length * Math.random();
System.out.println();
System.out.println ( libs[(int) val]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.