ইউনিটি 2017 র প্ল্যাটফর্ম জুড়ে এলোমেলো সংখ্যা জেনারেটর ডিটারমিনিস্টিককে কি একই প্রাথমিক বীজ দেওয়া হয়?


17

প্ল্যাটফর্ম জুড়ে unityক্য ইঞ্জিনগুলি এলোমেলো সংখ্যা জেনারেটর ডিটারিস্টোনমিক একই প্রাথমিক বীজ দেওয়া হয় বা আমার নিজের প্রয়োগ করা উচিত?

আমি জানি সম্প্রতি এলোমেলো নম্বর জেনারেটরে কিছু পরিবর্তন হয়েছে।

উত্তরের প্রশংসা করা হয়েছে, আমার কাছে কোনও পরীক্ষা করার জন্য হাতে থাকা ডিভাইস নেই এবং আমি এখনও বিষয়টি সম্পর্কে সরাসরি বিবৃতি পাইনি।


11
ভাল প্রশ্ন. কিন্তু যখন আপনার গেমটি নির্ধারণমূলক প্রক্রিয়াজাত প্রজন্মের উপর নির্ভর করে, ityক্য যদি কখনও তাদের অ্যালগোরিদম পরিবর্তন করার সিদ্ধান্ত নেয় তবে আপনি আপনার নিজের পিআরএনজি প্রোগ্রাম করতে পারেন। ডকুমেন্টেশন অ্যালগরিদম নথি করে না, তাই আপনার কোনও গ্যারান্টি অনুমান করা উচিত নয়।
ফিলিপ

1
আমি আপনার বক্তব্যটি বুঝতে পেরেছি, তবে যথেষ্ট কাজ করার দরকার আছে, আমি বরং রাষ্ট্রীয় unityক্যের পিআরএনজি এখনই কী আছে তা শিখতে পারব এবং ভবিষ্যতের প্রুফ সংস্করণটি আরও লাইনটিতে সরবরাহ করব provide না জেনেই এটি ব্যবহার করা কিছু সত্যই হতাশাগ্রত বাগগুলিতে নিয়ে যেতে পারে। আপনার উপদেশের জন্য ধন্যবাদ.
শাশ্বতনুব

2
আমি ফিলিপ এর পরামর্শ দ্বিতীয় @। আপনার যদি কোনও ডিটারমিনিস্টিক আরএনজি প্রয়োজন হয় তবে আপনার নিজের লেখার (এবং এটি পরীক্ষা করার) জন্য বিনিয়োগ করা উচিত। আপনার যদি কখনও নতুন ইউনিটির সংস্করণ ব্যবহার করার প্রয়োজন হয় এবং আরএনজি আবার পরিবর্তিত হয় তবে আপনি আহত হয়ে উঠবেন world যদি এটি ঘটে থাকে তবে একই আরএনজিটি পুনরায় তৈরি করা এবং পূর্ববর্তী সঞ্চয় / জগতের সাথে সামঞ্জস্য রাখা আপনার পক্ষে অসম্ভব।
স্টিফেন হকেনহুল

5
আমি মনে করি যে পরামর্শটি একটি উত্তর হিসাবে লেখার পক্ষে মূল্যবান হবে, "এটি এখন নির্বিচারক হোক বা না হোক, একে সর্বদা একইরূপে গণ্য করবেন না" (আপনারা যদি উভয়েই এত ঝোঁক পড়েন - আমি চাই না আপনার বজ্র চুরি)। কিছু সম্ভবত হ্যাঁ বা কোনও প্রশ্নের উত্তর "অপশন সি: অন্যান্য";) দিয়ে
উত্তমরূপে দেওয়া হয়

উত্তর:


8

যদিও আমার কাছে কোনও বিস্তৃত পরীক্ষা করার সময় নেই, প্রাথমিক গবেষণায় পরামর্শ দেওয়া হয়েছে যে ব্যবহৃত এলোমেলো সংখ্যা জেনারেটরটি বিভিন্ন প্ল্যাটফর্ম জুড়ে নির্ধারক। সঠিক প্রয়োগটি হ'ল: ইউনিটি পিআরএনজি । আরও দেখুন: বিভিন্ন হার্ডওয়্যারে ityক্য র‌্যান্ডম বীজ
ইউনিটি Randomক্লাসের সাথে, পিআরএনজির সঠিক অবস্থা সংরক্ষণ করা যায়, দেখুন: ityক্য র্যান্ডম স্যাট


7

টমাস জিজ্ঞাসা করা প্রশ্নের উত্তর । আরও গুরুত্বপূর্ণ প্রশ্নটি নিম্নরূপ:

ইউনিটি 2017 র্যান্ডম নম্বর জেনারেটরটি সমস্ত বর্তমান এবং ভবিষ্যতের প্ল্যাটফর্মগুলিতে একই বীজ দেওয়া একই নম্বর প্রদানের গ্যারান্টিযুক্ত এবং ভবিষ্যতের Unক্যের প্রকাশের হিসাবে একই সংখ্যাগুলি সরবরাহ করারও কি নিশ্চিত?

এটি হওয়ার পক্ষে একটি উচ্চ সম্ভাবনা রয়েছে তবে এটি গ্যারান্টি হিসাবে একই নয়। সুতরাং উত্তর, দুর্ভাগ্যক্রমে, " না, এটি হয় না "। গ্যারান্টির র্যান্ডম ডকুমেন্টেশনে স্পষ্টভাবে বলা দরকার , তবে বর্তমানে তেমন কোনও জিনিস নেই।

ব্যক্তিগতভাবে, এমনকি যদি এরকম কোনও গ্যারান্টি থাকে তবে আমি এটি বিশ্বাস না করার পরামর্শ দিই - এমনকি গ্যারান্টি সহ এখনও দুর্ঘটনাক্রমে (একটি বাগ) প্রয়োগের পরিবর্তনের সম্ভাবনা রয়েছে বা অবমূল্যায়ন এবং পরে অপসারণের সুযোগ রয়েছে। এক পর্যায়ে আপনি ityক্য কাঠামোর বাইরে জেনারেটরটি পুনরায় ব্যবহার করতে চাইতে পারেন। Ityক্যের উপর নির্ভর করার পরিবর্তে, অন্য কেউ লিখেছেন এমন একটি এলোমেলো সংখ্যা জেনারেটর কেবল অনুলিপি করুন (আপনার কোডটি ব্যবহারের অনুমতি দেওয়া হয়েছে তা নিশ্চিত করুন) এবং এলোমেলোতার জন্য আপনার প্রয়োজনীয়তা পূরণ করে যাচাই করার জন্য একটি পরীক্ষা লিখুন।


4

ইউনিটি 2017.2.0f3 ব্যবহার করে, ইউনিটিইজাইন.র্যান্ডম একাধিক প্ল্যাটফর্ম জুড়ে একই ফলাফল দেয় বলে মনে হয়। উইন্ডোজ 10, ম্যাকোস 10.12 সিয়েরা এবং অ্যান্ড্রয়েড 7 এ পরীক্ষিত।

পরীক্ষা করার জন্য, আমি একটি বীজ-কারখানা তৈরি করেছি যাতে আমি তৈরি করেছি:

using UnityEngine;

public class SeedFactory {

    private Random.State state;

    public SeedFactory (int seed) {
        Random.InitState(seed);
        state = Random.state;
    }

    // Set Unity's global Random state with this SeedFactory's state, get a random int,
    // then set our SeedFactory's state with the new state.
    // (this allows us to use multiple SeedFactories for multiple paths of determinism
    // if desired)
    public int GetRandomInt (int minInclusive, int maxExclusive) {
        Random.state = state;
        int randomInt = Random.Range(minInclusive, maxExclusive);
        state = Random.state;
        return randomInt;
    }

}

এবং পরীক্ষা চালানোর জন্য একটি মনোবিহ্যাভির:

public class SeedTest : MonoBehaviour {

    void Start () {
        SeedFactory seedFactory = new SeedFactory(123456789);
        string result = "";
        for (int i = 0; i < 20; i++) {
            result += seedFactory.GetRandomInt(int.MinValue, int.MaxValue) + ", ";
        }
        Debug.Log(result);
    }

}

এবং ফলাফল সব একই ছিল:

Windows Editor:
217814258, 711215697, 1793372675, -1318111305, -513578644, 1776128467, -1503243711, -285471819, -1800526065, -1845985472, -2061970588, 188207569, 1858341351, -1139513088, 2136219157, 1255727479, -2070068486, 459175680, 1151694536, 1232856178, 

Windows Standalone:
217814258, 711215697, 1793372675, -1318111305, -513578644, 1776128467, -1503243711, -285471819, -1800526065, -1845985472, -2061970588, 188207569, 1858341351, -1139513088, 2136219157, 1255727479, -2070068486, 459175680, 1151694536, 1232856178,

macOS Standalone:
217814258, 711215697, 1793372675, -1318111305, -513578644, 1776128467, -1503243711, -285471819, -1800526065, -1845985472, -2061970588, 188207569, 1858341351, -1139513088, 2136219157, 1255727479, -2070068486, 459175680, 1151694536, 1232856178,

Android:
217814258, 711215697, 1793372675, -1318111305, -513578644, 1776128467, -1503243711, -285471819, -1800526065, -1845985472, -2061970588, 188207569, 1858341351, -1139513088, 2136219157, 1255727479, -2070068486, 459175680, 1151694536, 1232856178,
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.