Fråga:
Hur många världsfrön finns i Minecraft?
John
2015-07-14 14:25:59 UTC
view on stackexchange narkive permalink

Jag undrade om hur många frön som finns i Minecraft (1.8.7) och hur det får så lite diskutrymme? Jag tror att det finns många frön per världstyp, och beräknar detta också för ALLA anpassade kombinationer. Jag är säker på att de är över zillioner. Kan du berätta antalet frön?

Jag frågar bara om antalet frön.Till exempel, om någon spelar varje världstyp med varje utsäde och varje anpassad möjlighet (exempel: skjutreglage flyttade med 1 till en annan riktning, är jag säker på att någon inte riktigt gör det).På hur många frön den personen skulle ha spelat?@Ionic
@5pike karaktärerna du anger är faktiskt irrelevanta.Hela texten hashades till ett enda värde.
Minecraft lagrar inte alla möjliga världar.Världar genereras slumpmässigt och fröet används för att påverka slumptalsgeneratorn (på ett förutsägbart sätt, så att om du använder samma frö gör det samma "slumpmässiga" nummer)
Missförståelsen du verkar ha är att frön är ungefär som nivålösenord i vissa old-school-spel - det är de inte.Istället representerar varje frö helt enkelt en utgångspunkt för att generera hela världen, bit för bit efter behov.Så det finns inga "speciella", "dolda" frön - huvudpoängen med att använda ett anpassat frö (förutom underhållningsvärde) är så att du kan spela på samma karta som dina vänner - ni är båda överens om att spela i en värld med enutsäde av säg "HumblePhoenix", och ni båda kommer att ha samma start terräng, resurser etc.
Du kanske vill lära dig mer om [pseudo-slumptalsgeneratorer] (https://en.wikipedia.org/wiki/Pseudo_random_number_generator).
Jag visste vad som är ett frö.Jag startade om många världar med det.@Luaan
Sju svar:
SirBenet
2015-07-14 15:05:31 UTC
view on stackexchange narkive permalink

Det finns 18 446 744 073 709 551 616 (2 64 ) möjliga frön. Alla frön är ett nummer. Om bokstäver matas in i sålådan används Java: s hashCode () -funktion för att göra det till ett nummer.

Seeds använder inte mycket disk utrymme (lagrat som ett långt heltal, vilket betyder bara 8 byte per värld) eftersom endast ett frö som har valts för en värld lagras; inte alla 18 kvint. När ett frö behövs för världsgenerering genereras ett slumpmässigt från systemklockan (eller matas in manuellt av användaren) och lagras sedan och används för att generera världen.

Hur många möjliga världar kan generera , inklusive anpassningsalternativ ? Förmodligen kan mer än någon dator beräkna givet alla de flytande skjutreglagen som finns i en anpassad värld.


Här är en bild som visar ett slumpmässigt genererat utsäde:

enter image description here

-3,010,441,696,458,036,422 är mycket lägre än både -2,147,483,648 och -140,737,488,355,328. Detta innebär att frön använder mer än 32 bitars och 48 bitars signerade heltalsområden.

Din redigering lägger inte till något användbart i ditt svar.Återställ det och lägg till det som en kommentar till svaret som du anser är felaktigt.
@Lilienthal Redigeringen visar att utbudet av frön är (åtminstone) 2 ^ 64, vilket verkställer mitt svar.Jag tycker att det är mycket användbart att veta när ett svar är korrekt.
@ratchetfreak Fröet som visas i bilden genererades slumpmässigt och ligger utanför ett 48-bitars nummer.
@colorfusion då måste de ha bytt RNG sedan jag senast kontrollerade
Har du någon aning om hur många världsmöjligheter det faktiskt finns?Har den processuella generationen faktiskt en entropi på 64 bitar, eller är det närmare att säga 32 bitar?
@colorfusion Bilden kan mycket väl vara användbar (även om ett enda värde inte säger så mycket om intervallet), men svar bör i allmänhet vara fristående.Det kommer också över som ganska passivt aggressivt att peka ut andra svar för att vara felaktiga, särskilt om du inte erbjuder den andra affischen en chans att förbättra eller dra tillbaka svaret genom att lämna en kommentar.
@Lilienthal Det andra svaret var det accepterade svaret vid tidpunkten för redigeringen, så jag kände behovet av att meddela OP att svaret de accepterade är fel och varför det är fel.Jag försöker inte vara passiv aggressiv, se bara till att folk har rätt information.Om mitt svar är felaktigt skulle jag vara glad för att någon skulle skriva ett annat svar med rätt svar och nämna varför mitt är felaktigt.
Du säger att siffran du visar är "mycket lägre än -2,147,483,648 som Kevin van der Velden hävdar är minimivärdet" men du säger också "Java's hashCode () -funktion används för att förvandla det till ett tal."vilket betyder att det bara är ett annat sätt att säga "-140449792", vilket inte är mindre än "-2147483648".Vilket är sant?
@JonHanna Jag tror att 'hashCode ()' endast används om det inmatade fröet har bokstäver i sig.Om du anger "1" i sålådan är nivån utsäde bara 1. -140449792 skapar inte samma värld som -3010441696458036422.
@JonHanna `hashCode ()` används endast om det inmatade fröet innehåller bokstäver.Den skulle inte användas på -3010441696458036422.
BlueRaja - Danny Pflughoeft
2015-07-14 20:55:54 UTC
view on stackexchange narkive permalink

Jag uppgav ursprungligen att Minecraft använder Java: s standardklass Random för pseudoslumpgenerering. Slumpmässigt använder 48-bitarsfrön.

Det skulle dock innebära att frön 1 och 2 48 +1 resultat i samma värld, som andra har påpekat, är inte sant. Så jag grävde mer.


Minecraft verkar använda Slumpmässig överallt utom för biogenereringskoden. Där använder den sin egen slumpgenerator från hemspunnen. Från GenLayer.java:

 skyddad int nextInt (int upperBound) {int randVal = (int) ((this.chunkSeed >> 24)% (long) upperBound); if (randVal < 0) {randVal + = upperBound; } this.chunkSeed * = this.chunkSeed * 6364136223846793005L + 1442695040888963407L; this.chunkSeed + = this.worldGenSeed; returnera randVal;}  

Detta är en linjär kongruentialgenerator med värden a = 6364136223846793005 och m = 1442695040888963407 . Detta kommer verkligen att producera 2 64 distinkta utflöden, och därmed det finns 2 64 distinkta världar.

Påståendet om Minecraft-wiki att "Multiplayerfrön får bara ha 2 48 möjliga värden [..] på grund av att Random.nextLong () " används är felaktig . Världsgeneratorerna för en spelare och multiplayer är inte olika.


Användningen av Slumpmässig överallt annars betyder betyder att vissa saker kommer att vara samma mellan frön som är avstängda med 2 48 , såsom frön 1 och 2 48 +1. Exempelvis bör malmens plats vara nästan densamma mellan de två (utom malmer som tas bort av grottsystem) .

Användningen av per-bit frön har också några intressanta konsekvenser. Till exempel, med tanke på det lilla antalet biomer och det stora antalet bitar, finns det i en viss värld mycket stor sannolikhet för att det finns två bitar som är exakt samma. Att hitta dessa bitar innebär emellertid matte som ligger utanför mig. Om någon är intresserad av att räkna ut det är koden för att initialisera chunkSeed

  public void initChunkSeed (long chunkX, long chunkY) {this.chunkSeed = detta. worldGenSeed; för (int i = 0; i < 2; i ++) {this.chunkSeed * = this.chunkSeed * 6364136223846793005L + 1442695040888963407L; this.chunkSeed + = chunkX; this.chunkSeed * = this.chunkSeed * 6364136223846793005L + 1442695040888963407L; this.chunkSeed + = chunkY; }}  
@Texenox:-nr. Ingångsvärdet måste hashas om det inte är numeriskt _ (eftersom fröet måste vara ett nummer) _, men om numeriska ingångar också hashades, skulle du inte kunna återskapa slumpmässiga frövärldar, eftersom hash ärEnkel.Så hela hashdiskussionen är en röd sill.
Mitt accepterade svar (och den ursprungliga frågan) gäller endast möjliga frön, inte möjliga världar;båda våra svar kan vara korrekta.Om ditt svar är fallet, borde inte världar som genereras med frön som 281474976710657 och 1 vara desamma?Jag kan ha fel på det här.
De andra bitarna i 64-bitarsfröet kan dock användas för att initialisera en per bit RNG eller någon annan parameter.Minecraft använder en koordinatbaserad procedurell terränggenereringsalgoritm (så den genererade världen är oberoende av vilket sätt du reser först), snarare än en enda algoritm som körs en gång baserat på en enda slumpmässig sekvens.
förutom att 'Random.nextLong ()' använder två iterationer av det 48 bitars fröet.Det går i grunden 'Random.nextInt ()' två gånger och skjuter dem ihop till ett 64-bitarsnummer.Så det är fullt möjligt att få ett 64-bitarsfrö ur ett "slumpmässigt" objekt.
@corsiKa: Du förväxlar 64-bitars utdata med 64-bitars utsäde.PRNG kommer att generera många miljarder bitar innan den upprepar sig, så på sätt och vis är utgången "miljarder bitar", mycket mer än 64. Men ingången (utsäde) är fortfarande 48 bitar;dessa 48-bitar bestämmer helt vilken utgång som kommer att bli.
@BlueRaja-DannyPflughoeft Så, om jag förstår vad du säger korrekt, bör frön med samma 48 bakbitar producera identiska världar?Och därmed bör frön som 281474976710657 och 1 producera exakt samma världar?
@BlueRaja-DannyPflughoeft Jag förvirrar ingenting med någonting.Bara för att det bara finns 2 ^ 48 sätt att starta ett slumpmässigt objekt betyder det inte att det bara finns 2 ^ 48 sätt att använda ett slumpmässigt objekt.Chansen är mycket troligt att det slumpmässiga objektet inte skapas för det enda syftet att bestämma utsäde, och även om det var så var det fortfarande en sträcka att dra slutsatsen om vad du sa från det uttalandet.Dina bevis håller helt enkelt inte.
@colorfusion: Du hade rätt;se redigera.
Ryan
2015-07-15 01:56:27 UTC
view on stackexchange narkive permalink

Så svaret finns här: http://minecraft.gamepedia.com/Seed_(level_generation)

Vilket trots att det redan är länkat på den här sidan verkar ingen att ha läst allt.

För att sammanfatta:

Om du använder ett ord eller en fras String.hashCode () kallas och det begränsar din maximala mängd frön till 2 ^ 32 på grund av dess implementering.

Om du anger ditt eget nummer eller låter systemet bestämma utsäde är din utsädesgräns 2 ^ 64 frön.

Dock:

Om det är en multiplayervärld implementerar de nextLong () java-funktionen och begränsningarna för detta är 2 ^ 48 möjliga fröalternativ.

Den sista meningen är ingen mening.Du sammanslager flera utgåvor _ (fröet till `nya slumpmässiga (frö)` är bara 48 bitar, vilket inte har något att göra med "överbelastning" nextLong () `) _
Det är `String # hashCode ()` inte `Java.hashCode ()`.Det finns ingen "Java" -klass med en statisk metod "hashCode".(Ja, du kan komma undan med att ersätta pundet med en punkt, men jag gillar att vara pedantisk)
@BlueRaja-DannyPflughoeft Jag samlar inte någonting, jag upprepar bara vad ** DEVELOPER ** säger på deras egen wiki-sida.Och jag sa aldrig något om "överbelastning" `nextLong ()`.Så argumentera så mycket du vill, det förändrar inte vad utvecklaren säger att de gör.När det gäller `Java.hashCode` skrev jag bara upp det fel när jag försökte sammanfatta istället för att bara kopiera klistra in.Utvecklaren listar det som `String.hashCode ()`.Mitt fel.
Utvecklaren underhåller inte den wiki-sidan, det gör slumpmässiga användare.Det är inte en officiell informationskälla mer än den här sidan är.
Elva
2015-07-14 14:59:52 UTC
view on stackexchange narkive permalink

Frön hashades till ett 32-bitars signerat heltal. Vilket är programmerare talar för ett tal som kan vara positivt eller negativt och är 32 värden i bas 2.

Detta ger siffrorna från -2,147,483,648 till 2,147,483,647.

Beroende på implementeringen av Minecraft kan vissa av dem resultera i samma värld i vissa aspekter som att ha 2 frön med olika biomer men samma höjdkarta.

(Delvis) korrigering: Om du inte ställer in en text så kommer minecraft istället ta aktuell tid som dess värde, vilket är ett 64-bitarsnummer så det finns fler alternativ där.

Källa: http://minecraft.gamepedia.com/Seed_(level_generation)

Om Minecraft ersätter ett strängfrö med aktuell tid, hur kommer det sig att jag alltid får samma värld för utsäde "SEED"?
Finns det en specifik logik som förbjuder inmatning av nummer som är längre än 32 bitar?Du säger att spelet kan hantera 64 bitar tidsvärden, men man kan bara ange 32-bitarsnummer manuellt, eller hur?
@OrcJMR det ersätter inte strängfröet med aktuell tid, om du * inte * ställer in den kommer den att använda aktuell tid.Det är också därför du inte kan infoga ett 64-bitarsvärde via textfältet.Det konverterar den texten (via envägs hash) till ett 32-bitars nummer.Om du vill ange ett godtyckligt nummer kan du redigera kartfilen och ta bort de genererade bitarna och sedan starta spelet antar jag.
@KevinvanderVelden om den angivna strängen är numerisk blir den analyserad i en lång och används som fröet, om den inte är så används String.hashCode.
Åh, min dåliga, läsning misslyckas i den tidsfrågan.Men jag har redan kommit till spelet och testat: http://i.imgur.com/x0fMiR3.png Det är definitivt möjligt att ange 64-bitars heltal, som de ÖVER 9 MILJARDER.
Ooh fancy, visste inte det.Det är vad @ratchetfreak sa
Ionic
2015-07-14 14:37:26 UTC
view on stackexchange narkive permalink

Antalet frön begränsas inte av själva applikationen. Bara efter längden på det tillåtna värdet för själva utsäde.

Fröna lagras inte i Minecraft. Fröet i sig kommer bara att vara någon form av "startvärde" där världsgenerationen startar det genererar process. Det finns inte ett frö för varje värld i själva spelet. Du får bara samma värld som generationsprocessen skulle köra och generera samma värld på grund av samma startförhållanden.

Du kan jämföra den genom att räkna stegen från din väg hem till ditt arbete. Om samma villkor gäller varje dag kommer samma sätt att användas. Om det snöar en dag eller om du stannar lite senare på dagen är startvillkoren annorlunda och du kommer att ta ett annat sätt eller en annan tid till ditt arbete. Men om samma annorlunda tillstånd skulle gälla en annan dag kommer det att sluta på samma sätt. Bara som ett exempel för att klargöra det för icke-tekniker. :-)

Jayden Miller
2015-07-15 08:32:19 UTC
view on stackexchange narkive permalink

Datorer genererar inte riktigt slumptal. När du hämtar ett slumpmässigt nummer ger det dig bara nästa nummer i en sekvens av till synes slumpmässiga siffror (de har inget mönster eller koppling till varandra).

Ett frö är det som slumpmässigt slumpmässigt gör denna lista med siffror, i de flesta fall kommer den aktuella systemtiden att användas som ett frö. Du kan tänka dig ett frö som ett sätt att få samma slumpmässiga resultat upprepade gånger.
Det sätt som en Minecraft-värld genereras på är genom en algoritm som upprepade gånger hämtar slumpmässiga siffror som när man ska öka ythöjden osv ...

Med hjälp av frön kommer dessa slumpmässiga siffror att vara desamma varje gång, vilket resulterar i att en värld är densamma när samma utsäde används.
Med detta sagt tar frön inte diskutrymme eftersom de är helt enkelt ett sätt att klättra / slumpmässigt lista över till synes slumpmässiga nummer.

Tja, det plockar faktiskt ett av fröna baserat på tiden din dator är inställd på.
Ännu viktigare, detta svarade inte på den fråga som ställdes.
MyTreeko78255
2016-09-02 19:23:38 UTC
view on stackexchange narkive permalink

1.2413916e + 61

tydligen detta det är ett mycket stort nummer men 48 gånger!skulle vara svaret

Det här svaret skulle vara mycket bättre om du förklarade var dessa siffror kommer ifrån - vad är 48!ska representera?Just nu ser det ut som att det här är helt fel.


Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...